Нахождение заданной подстроки в строке с регулярным выражением в Python - PullRequest
0 голосов
/ 02 декабря 2019

Я пытаюсь найти все вхождения подстроки в строке, как показано ниже:

import re
S = 'aaadaa'
matches = re.finditer('(aa)', S)
if matches:
  #print(matches)
  for match in matches:
   print(match)
else:
    print("No match")

Текущий вывод:

<re.Match object; span=(0, 2), match='aa'>
<re.Match object; span=(4, 6), match='aa'> 

Но я ожидаю, что он долженукажите следующие значения:

<re.Match object; span=(0, 2), match='aa'>
<re.Match object; span=(1, 3), match='aa'>
<re.Match object; span=(4, 6), match='aa'>

Может ли кто-нибудь помочь мне в этом?

1 Ответ

0 голосов
/ 02 декабря 2019

Проблема здесь в том, что как только модуль re соответствует двойному aa, он также будет потреблять обеих букв. Но вы хотите совпадения матчей. Здесь можно использовать один трюк для поиска a(?=a):

S = 'aaadaa'
matches = re.findall(r'a(?=a)', S)
matches = [s + "a" for s in matches]
print(matches)

['aa', 'aa', 'aa']

Обратите внимание, что мы помечаем второй a в списке вывода, поскольку на каждом шаге фактически совпадает только первая буква. .

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