Regex: Как сопоставить внутреннюю подстроку только с одной группой, если строка начинается с желаемой последовательности - PullRequest
1 голос
/ 22 октября 2019

Я использую Python Regex.

Рассмотрим пример строки:

must_start some_random_filler "match this!" end

Я хотел бы найти соответствующий объект, первый и единственныйгруппа - match this!, если вся строка начинается с must_start.

Мне удалось извлечь подстроку match this!, используя две группы:

(?<=^must_start)(.*\")(?<=\")(.*?)(?=\")

Группа 1: some_random_filler "

Группа 2: match this!

Возможно ли иметь два последовательных положительных взгляда сзади? Один для проверки, что строка начинается с must_start, а другой для проверки, что match this! предшествует "? (some_random_filler может быть любой последовательностью символов). До сих пор я не смог сформулировать удачное выражение.

Это не конец света, если у меня есть две группы;Мне просто любопытнее узнать, возможно ли это. Моя интуиция говорит да, но я только новичок с регулярными выражениями, отсюда и вопрос.

Ответы [ 2 ]

2 голосов
/ 22 октября 2019

Вам не нужно использовать вид сзади, чтобы получить совпадение между двойными кавычками, используя группу захвата ([^"]+) и класс отрицательных символов

^must_start\b[^"]*"([^"]+)"

Regex demo

Если у вас установлен модуль regex pypi , вы можете использовать положительный вид сзади:

(?<=^must_start\b[^"]*")[^"]+(?=")
  • (?<= Положительный взгляд позади, подтвердите, что слева:
    • ^must_start\b Совпадение с начала must_start
    • [^"]*" Класс отрицательных символов, совпадение 0+ раз с любым символом, кроме ", затем совпадение"
  • ) Закрыть взгляд назад
  • [^"]+ Класс отрицательных символов, соответствует 1+ раз любому символу, кроме "
  • (?=") Позитивный взгляд, утверждаем, что справа "

Python demo

0 голосов
/ 22 октября 2019

Попробуйте это регулярное выражение:

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