Регулярное выражение: ключевое слово с последующим значением для извлечения - PullRequest
1 голос
/ 08 апреля 2011

У меня был этот вопрос пару раз прежде, и я все еще не мог найти хороший ответ ..

В моей текущей задаче у меня есть вывод консольной программы (строка), который выглядит так:

Number of assemblies processed = 1200
Number of assemblies uninstalled = 1197
Number of failures = 3

Теперь я хочу извлечь эти числа и проверить, были ли сбои. (Это вывод gacutil.exe, кстати.) Другими словами, я хочу сопоставить любое число [0-9] + в строке, которой предшествует failures =.

Как бы я это сделал? Я хочу получить номер только . Конечно, я могу сопоставить все это, например / failures = [0-9] + / .., а затем обрезать первые символы длиной («failures =») или что-то в этом роде. Дело в том, что я не хочу этого делать, это неудачный обходной путь.

Потому что это странно; если мой шаблон для сопоставления, но не для вывода («failures =») приходит после что я хочу извлечь ([0-9] +), есть способ сделать это:

шаблон (? = Выражение)

Чтобы показать абсурдность этого, если весь файл был обработан задом наперед, я мог бы использовать:

[0-9] + (? = = Seruliaf)

... так, нет ли пути вперед? : Т

Ответы [ 2 ]

3 голосов
/ 08 апреля 2011

pattern(?=expression) является положительным взглядом на регулярные выражения, и вы ищете положительный взгляд на регулярные выражения, который выглядит следующим образом (?<=expression)pattern, но эта функция поддерживается не всеми разновидностями регулярного выражения. Это зависит от того, какой язык вы используете.

больше информации на регулярные-выражения.info для сравнения функции Lookaround прокрутите вниз 2/3 на этой странице.

0 голосов
/ 08 апреля 2011

Если ваш консольный вывод действительно выглядит так во всем, попробуйте разбить строку на «=», когда найдено слово «fail», затем получите последний элемент (или 2-й элемент).Вы не сказали, какой у вас язык, но любой приличный язык с возможностью разделения строк сделает эту работу.Например

gacutil.exe.... | ruby -F"=" -ane "print $F[-1] if /failure/"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...