2013-04-08 3 views
1

Я запустил следующий код и получил только первый ')' в качестве совпадения. Может ли кто-нибудь помочь мне в том, почему обычный жадный «))« не возвращается?Python's .group() возвращает только первое совпадение

r=re.compile('\)') 
var=r.search('- hi-))there') 
print var.group() 
+0

Возможно, вы хотите '\) +'? – Patashu

ответ

5

Ваше регулярное выражение не жадное. Фактически, он настроен на соответствие только одному символу. Если вы хотите, чтобы соответствовать повторы, а также, добавить +:

>>> r=re.compile('\)+') 
>>> var=r.search('- hi-))there') 
>>> print var.group() 
)) 
+0

Спасибо за разъяснение. findall(), похоже, работал на меня. –

9

search будет возвращать только первый матч.

Чтобы найти все матчи использовать findall:

r=re.compile('\)') 
var= r.findall('- hi-)) there') 
print (var) 

Если вы хотите, чтобы найти как брекеты в использовании один матч:

r=re.compile('\)+') 

В + матчи на 1 или более объекта.

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