Условие регулярного выражения после и перед известной фразой - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь захватить фразу, которая начинается с заглавной буквы между 2 известными фразами.Скажем, между «известной фразой» и словом «The».

Например, в приведенном ниже тексте фраза, которую я пытаюсь уловить: Stuff TO CApture That always start with Capital letter but stop capturing when

Игнорировать слова Известная фраза, игнорировать случайную фразу Stuff TO CApture, которая всегда начинается с заглавной буквы, но прекращается захват, когда появляется символ.

регулярное выражение, которое я пробовал: (?<=Known phrase, ).*(?= The) и Known phrase, (.*) The это регулярное выражение также захватывает ignore random phrase.Как мне это игнорировать?

Ответы [ 3 ]

0 голосов
/ 13 декабря 2018

В качестве примера вы можете использовать:

Known phrase, [a-z ]+([A-Z].*?) The

См. regex demo

Объяснение

  • Known phrase, Совпадение буквально
  • [a-z ]+ Совпадение 1+ раз строчными буквами или пробелами (Добавьте к классу символов то, что вы разрешаете сопоставлять, кроме заглавных букв)
  • ([A-Z].*?) Захват в группе, соответствующей символу в верхнем регистре, за которым следует 0+ раз любой символ, кроме новой строки.
  • The Совпадение буквально
0 голосов
/ 13 декабря 2018

Я не уверен в том, что вы пытаетесь сделать, но, пытаясь придерживаться своего кода, (?<=Known phrase, )([^A-Z]*)(.*)(?=The) должен добиться цели: нужный вам текст находится в группе 2.
Если вам нужносопоставьте все, просто измените на (.*)(?<=Known phrase, )([^A-Z]*)(.*)(?=The)(.*) и получите текст в группе 3.

0 голосов
/ 13 декабря 2018

Я полагаю, поскольку регулярное выражение является жадным слева, сначала нужно попытаться сопоставить все, что не является заглавными буквами

Что-то вроде /Start[^A-Z]*(.*)stop/ ([^A-Z] соответствует всему, что не является заглавной буквой)

regex101 demo

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