Как найти перекрывающиеся соответствия с regexp?

>>> match = re.findall(r'\w\w', 'hello')
>>> print match
['he', 'll']

Так как \w\w означает два символа, 'он' и 'll' ожидаются. Но почему 'el' и 'lo' не соответствуют regex?

>>> match1 = re.findall(r'el', 'hello')
>>> print match1
['el']
>>>
62
задан 11 July 2012 в 14:49

2 ответа

Не regex эксперт, но я хотел бы ответить на свое подобное вопрос .

, Если Вы хотите использовать группу получения с предвидением:

пример regex: (\d) (? =.\1)

строка: 5252

это будет соответствовать первым 5, а также первое 2

(\d) должно сделать группу получения, (? = \d\1), должен соответствовать любой цифре, сопровождаемой группой 1 получения, не используя строку, таким образом позволить накладываться

0
ответ дан 31 October 2019 в 13:45

Можно использовать новый Python regex модуль , который поддерживает перекрывающиеся соответствия.

>>> import regex as re
>>> match = re.findall(r'\w\w', 'hello', overlapped=True)
>>> print match
['he', 'el', 'll', 'lo']
31
ответ дан 31 October 2019 в 13:45

Другие вопросы по тегам:

Похожие вопросы: