regexp
От: Logot Украина  
Дата: 19.09.16 10:46
Оценка:
Привет

Помогите составить регулярное выражение
Нужно проматчить эту строку

a=candidate:1 1 UDP 2130706431 192.168.252.163 18194 typ host

Чтобы отличить ее от

a=candidate:ng+ja0TJ15HOBfDdGn3Ja8uLinQiIvGFjpm4kUinvAE 1 nAtYA9ltLr7LHo63anMEnQ UDP 0.830 192.168.252.163 16166


1 1 — это символы, не числа
UDP — может быть UDP, TCP-PASS, TCP-ACT
2130706431 — число
192.168.252.163 — IP v4
host — можеть быть host, relay, srflx

            char const* expression = R"(^a=candidate:(\w|\+|\/){1,32}\s\d{1,5}\s(UDP|([-.!%*_+'~\w]+))\s\d{1,10}\s)";
            if (std::regex_match(sdp_session->dataBlob, std::regex(expression)))
            {
                return index;
            }
Re: regexp
От: Logot Украина  
Дата: 19.09.16 15:51
Оценка:
Здравствуйте, Logot, Вы писали:

L>Привет


L>Помогите составить регулярное выражение

L>Нужно проматчить эту строку
L>

L>a=candidate:1 1 UDP 2130706431 192.168.252.163 18194 typ host

L>Чтобы отличить ее от
L>

L>a=candidate:ng+ja0TJ15HOBfDdGn3Ja8uLinQiIvGFjpm4kUinvAE 1 nAtYA9ltLr7LHo63anMEnQ UDP 0.830 192.168.252.163 16166


L>1 1 — это символы, не числа

L>UDP — может быть UDP, TCP-PASS, TCP-ACT
L>2130706431 — число
L>192.168.252.163 — IP v4
L>host — можеть быть host, relay, srflx

L>
L>            char const* expression = R"(^a=candidate:(\w|\+|\/){1,32}\s\d{1,5}\s(UDP|([-.!%*_+'~\w]+))\s\d{1,10}\s)";
L>            if (std::regex_match(sdp_session->dataBlob, std::regex(expression)))
L>            {
L>                return index;
L>            }
L>


вроде решил таким выражением
    static char const* expression = R"(^a=candidate:(\w|\+|\/){1,32}\s\d{1,5}\s(UDP|TCP-ACT|TCP-PASS)\s\d{1,10}\s(\d{1,3}\w[.]\d{1,3}\w[.]\d{1,3}\w[.]\d{1,3})\s(\d{3,5})\s(typ)\s(host|relay|srflx)\s{0,})";


не знаю, насколько правильно... может есть лучше варианты
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.