RegEx - извлечение текста между фразами с помощью GROK - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь использовать RegEx для сбора некоторой информации между двумя «тегами».Пример: текст и текст Сообщение об ошибке: http 404 не найден Процедуры: текст немного текст

Мне нужно проанализировать все поле, найтифразы «Сообщение об ошибке:» и «Процедуры:» и фиксируют, что находится между ними, в данном случае «http 404 not found».Мне нужно показать только текст между тегами, и нет необходимости показывать теги.

Я пробовал много вещей, используя RegEx и Grok, но мои попытки не увенчались успехом.

Кто-нибудь знает, как мне это сделать?

Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Поскольку вы также просили образец Грока, я подумал о том, чтобы отправить еще один ответ.В этом случае мое решение основано на шаблоне grok, использующем регулярные выражения для сопоставления несущественных частей, включая в конце или начале ожидаемые теги.Решение:

(?<notImportant1>[A-Za-z ]* Error message:) (?<textBetweenTags>[A-Za-z0-9 ]*) (?<notImportant2>Procedures: [A-Za-z ]*)

Это даст вам что-то вроде:

  • notImportant1 : некоторый текст и еще несколько текстовых сообщений об ошибке:
  • textBetweenTags : http 404 не найден
  • notImportant2 : Процедуры: некоторый текст, некоторый текст

Здесь вы извлекли как 'textBetweenTagsПодстрока, в которой вы были заинтересованы.Поймите, что если текст до или после тегов содержит числа или другие символы, регулярное выражение должно измениться.

РЕДАКТИРОВАТЬ: Кстати, не знаю, знаете ли вы об инструменте, но вы можете проверить шаблон здесь .

0 голосов
/ 05 февраля 2019
@capture = $text =~ m/(Error message:)(.*?)(Procedures:)/s;
$capture = join '', @capture;
$capture =~ s/<.*?>//g;

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

Надеюсь, что этот код не содержит ошибок, я его не компилировал и надеюсь, что вы найдете его альтернативы, если вы используете другой языкчем Perl 5.

...