Python 学习笔记(六)正则扩展标记

1. (?:...) 不想保存括号里匹配项时使用

The (?:...) notation should be fairly popular; with it, you can group
parts of a regex, but it does not save them for future retrieval or use.

>>> re.findall(r'http://(?:\w+\.)*(\w+\.com)',

       'http://google.com http://www.google.com http://code.google.com')

['google.com', 'google.com', 'google.com']

2.(?P<name>) and (?P=name)

can use the (?P<name>) and (?P=name) notations together. The former
saves matches by using a name identifier rather than using increasing
numbers, starting at one and going through N, which are then retrieved
later by using \1, \2, ... \N.

>>> re.search(r'\((?P<areacode>\d{3})\) (?P<prefix>\d{3})-(?:\d{4})',

      '(800) 555-1212').groupdict()

{'areacode': '800', 'prefix': '555'}

3.findall() and finditer();

>>> re.findall(r'\w+(?= van Rossum)',

       '''

Guido van Rossum

Tim Peters

Alex Martelli

Just van Rossum

''')

['Guido', 'Just']
>>> bool(re.search(r'(?:(x)|y)(?(1)y|x)', 'xy'))

True

>>> bool(re.search(r'(?:(x)|y)(?(1)y|x)', 'yx'))

True

 

你可能感兴趣的:(python)