2015-04-26 4 views
2

Я хочу найти все подстроки, которые относятся к такому шаблону: некоторый символ + некоторый символ + первый символ. Теперь у меня есть это в Python 2.7:Найти повторяющиеся символы (стоять отдельно)

T = "i was here" 
m = re.findall(r"([a-z])[a-z](\1)", T) 
print m 

это дает:

[('e', 'e')] 

Кажется, что я очень близок к достижению своей цели, но я не могу понять, как я могу получить " ere ' как результат здесь?

ответ

2

Просто поместите скобки также вокруг среднего характера:

>>> m = re.findall(r"([a-z])([a-z])(\1)", T) 
>>> m 
[('e', 'r', 'e')] 
>>> ''.join(m[0]) 
'ere' 
1

Это также будет работать:

>>> m = re.findall(r"(([a-z])([a-z])(\2))", T) 
>>> m 
[('ere', 'e', 'r', 'e')] 
>>> m[0][0] 
'ere' 
+0

это работает, но это регулярное выражение строка очень неясная для меня:/ –

+0

@MikhailV, что дон» Вы понимаете? Внешние круглые скобки вокруг всего создают группу захвата # 1. Первая группа внутри - '([a-z])' - создает группу # 2, на которую ссылаются позже. – MattDMo

+0

спасибо, теперь я вижу –

Смежные вопросы