регулярное выражение без захвата - PullRequest
5 голосов
/ 26 марта 2012

Есть ли возможность сделать предпросмотр без захвата?Такие вещи, как bar(?:!foo) и bar(?!:foo) не работают (Python).

Ответы [ 2 ]

3 голосов
/ 29 марта 2012

Если вы делаете bar(?=ber) для «парикмахера», «бар» совпадает, но «бер» не захватывается.

1 голос
/ 23 мая 2012

Вы не ответили на вопрос Алана, но я предполагаю, что он прав, и вы заинтересованы в отрицательном прогнозном утверждении. IOW - соответствует «bar», но НЕ «barfoo». В этом случае вы можете построить свое регулярное выражение следующим образом:

myregex =  re.compile('bar(?!foo)')

for example, from the python console:

>>> import re
>>> myregex =  re.compile('bar(?!foo)')
>>> m = myregex.search('barfoo')
>>> print m.group(0)                <=== Error here because match failed
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'
>>> m = myregex.search('bar')    
>>> print m.group(0)                <==== SUCCESS!
bar
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...