Название: QRegExp, помогите написать регулярное выражение для трассировки строк Отправлено: neosapient от Октябрь 22, 2009, 14:48 Хочу распарсить получаемые с трассировки зачения.
Цитировать 1 <1 ms <1 ms <1 ms 192.168.1.1 ......................................................... 13 140 ms 141 ms 140 ms yandex-ic-130313-mow-b1.c.telia.net [213.248.96.34] 14 137 ms 138 ms 134 ms volkswagen-vlan602.yandex.net [77.88.16.122] 15 137 ms 136 ms 136 ms yandex.ru [213.180.204.11] С цифрами в первых четырех столбцах разобрался. Теперь, интересует как выделить в последнем столбце ip и host-имя. Причем, если host-имя извесно, то ip адрес пишется в квадратных скобках. Если host-имя не извесно, то сраз пишется ip-адрес, а квадратные скобки на пишутся. Помогите написать такое регулярное выражение ??? Название: Re: QRegExp, помогите написать регулярное выражение для трассировки строк Отправлено: ildar от Октябрь 23, 2009, 13:38 для части строки "yandex-ic-130313-mow-b1.c.telia.net [213.248.96.34]"
должно сработать что-то типа такого регекспа Код: ([^\\[]+(\\[[^\\]]+\\])?) [^\\[] - любой символ кроме открывающей квадратной скобки [^\\]] - * закрывающей * Название: Re: QRegExp, помогите написать регулярное выражение для трассировки строк Отправлено: zenden от Октябрь 23, 2009, 14:14 ildar
зачем знак вопроса ? мой вариант: Код
Название: Re: QRegExp, помогите написать регулярное выражение для трассировки строк Отправлено: neosapient от Октябрь 23, 2009, 16:29 Воспользовался http://txt2re.com/
IP адресс выделяю через ((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))(?![\\d]) Код: QString str("yandex.ru [2.154.160.255]"); Url адресс выделяю через ((?:[a-z][a-z\\.\\d\\-]+)\\.(?:[a-z][a-z\\-]+))(?![\\w\\.]) Код: QString str("yandex.ru [2.154.160.255]"); Где можно прочитать про правила составления регулярных выражений. По справке разобраться не удалось, может есть хороший учебник, где всё разжеванно? Название: Re: QRegExp, помогите написать регулярное выражение для трассировки строк Отправлено: Khs от Октябрь 23, 2009, 19:02 "Дж. Фридл. Регулярные выражения"
Название: Re: QRegExp, помогите написать регулярное выражение для трассировки строк Отправлено: ildar от Октябрь 23, 2009, 19:43 зачем знак вопроса ? ip адреса может не быть, знак вопроса ограничивает количество совпадений, эквивалент {0,1} 2 neosapient сформулируй условие поиска я например искал бы для строки "yandex.ru [2.154.160.255]" так : 1. берем все пока не встретим [ 2. берем все пока не встретим ] кроме того надо учесть жадность, "(?:[a-z][a-z\\.\\d\\-]+)\\." - точка будет внутри скобки вроде бы Название: Re: QRegExp, помогите написать регулярное выражение для трассировки строк Отправлено: zenden от Октябрь 23, 2009, 21:14 neosapient
А чем мой вариант не устраивает? Рабочий он Одновременно оба варианта парсит. |