Как построить индексы захвата регулярных выражений - PullRequest
2 голосов
/ 30 сентября 2019

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

"Sentences can have no index in the end."
"Or one index.[10]"
"Or there even. Can be. Multiple sentences. And indices.[9][10][11]"

Я хочу обрезать индексы в конце и просто вернуть предложение. Это мой первый (честно говоря, довольно наивный) подход: .*(\[\d+\])+. Но это не совсем то, что мне нужно. Я думаю, что моя группа справа это правильно. Но .* не делает правильных вещей, потому что тогда он просто сопоставит что-либо и возьмет последний [0], чтобы соответствовать + после группы.

1 Ответ

2 голосов
/ 30 сентября 2019

Вы можете использовать

re.sub(r'(?:\[\d+])+$', '', text)

Регламент соответствует

  • (?: - начало группы без захвата (используется для группировки последовательности меньших шаблонов, которые будутсовпадают, когда они появляются сразу)
    • \[ - [ char
    • \d+ - 1+ цифр
    • ] - a ]char
  • )+ - одно или несколько повторений
  • $ - конец строки.

См. регулярное выражение демо .

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