Сопоставление строки между двумя наборами символов без использования обходных путей - PullRequest
1 голос
/ 07 июня 2019

Я работал над некоторым регулярным выражением, чтобы попытаться сопоставить целую строку между двумя символами. Я пытаюсь захватить все, начиная от «Система», вплоть до «prod_rx». (Я надеюсь включить обе эти строки в мой матч). Ниже приведен полный текст, с которым я работаю:

\"alert_id\":\"123456\",\"severity\":\"medium\",\"summary\":\"System generated a Medium severity alert\\\\prod_rx.\",\"title\":\"123456-test_alert\",

Регулярное выражение, которым я сейчас пользуюсь, это ...:

(?<=summary\\":\\").*?(?=\\")

Это прекрасно работает, когда я могу использовать обходные пути, например, в Regex101: https://regex101.com/r/jXltNZ/1. Однако анализатор регулярных выражений в программном обеспечении, которое использует моя компания, не поддерживает обходные пути (безумно, верно?).

В любом случае, мой вопрос заключается в том, как я могу соответствовать описанному выше тексту, не используя lookaheads / lookbehinds. Любая помощь очень ценится !!

1 Ответ

1 голос
/ 10 июня 2019

Ну, мы можем просто использовать другой неумышленный метод, такой как это простое выражение:

.+summary\\":\\"(.+)\\",

и наши данные в этой группе захвата:

(.+)

наша правая граница:

\\",

и наша левая граница:

.+summary\\":\\"

Демо

...