Regex помощь в Python - PullRequest
       1

Regex помощь в Python

0 голосов
/ 15 июля 2010

Я пытаюсь проанализировать вывод около ста строк.Формат этого вывода такой:

<random text> STATION "STATION_NAME_ONE": <random text>
<random text> IP Address: 0.0.0.0 <random text>
<SEVERAL LINES OF RANDOM TEXT>

<random text> STATION "STATION_NAME_TWO": <random text>
<random text> IP Address: 1.1.1.1 <random text>
<SEVERAL LINES OF RANDOM TEXT>

... and so on

Я знаю IP-адрес станции, которую я ищу.Используя IP-адрес, я пытаюсь создать регулярное выражение, которое найдет название станции.Название станции может быть любой длины и может содержать любое количество цифр / букв / подчеркиваний.Название станции всегда будет предшествовать STATION и всегда будет сопровождаться двоеточием.IP-адрес всегда будет находиться в строке, следующей за названием станции, и перед ним всегда будет стоять IP-адрес:.

Обратите внимание, что есть несколько станций с разными названиями станций и IP-адресами.«Случайный текст» может быть любой длины и содержать любой символ / число / букву.

До сих пор мои попытки были:

re.search('(?<=STATION ).*?(?=:.*IP Address: %s)' % sta_ip, output, re.DOTALL)

, но, очевидно, это вернет в значительной степени первоеназвание станции каждый раз.

Как бы вы создали регулярное выражение для поиска по названию станции?Это возможно?

Ответы [ 3 ]

0 голосов
/ 15 июля 2010

Попробуйте /STATION\s*?"(.*?)"\s*?:.*?IP Address:\s*?%s/
Хитрость не в том, чтобы быть жадным в сопоставлении.После сопоставления этому регулярному выражению имя, которое вы хотите, будет в первом захвате.

0 голосов
/ 15 июля 2010

Редактировать Я понял. Ключ в том, что название станции и IP-адрес разделены только одной новой строкой, поэтому мы можем жестко закодировать эту новую строку.

re.search('STATION(?P<StationName>.*?):.*?\n.*?IP Address: %s' % sta_ip, output).group("StationName")
0 голосов
/ 15 июля 2010
STATION\s*"(.*?)":\s*.*?(?:\r|\n)<.*?>\s*IP Address:\s*IPHERE\s*<

Замените IPHERE на IP-адрес и, чтобы получить имя станции, извлеките первую подходящую группу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...