Python中的正则表达式


对Python中正则表达式的理解,主要就是对符号的理解,主要的符号有:

.

默认匹配一个字符,不包含换行符,如果设置DOTALL则匹配换行符

^

匹配行首

$

匹配行尾

*

匹配0个或者多个重复

匹配一个或者多个重复

匹配一个或者零个重复

*?,+?,??

按照非贪婪模式匹配

{m},{m,n},{m,n}?

分别匹配m个重复,m至n个重复,m至n个重复按照非贪婪模式

\

转义

[]

[abc],[a-z][^a-z]

|

或者匹配 'a|b'

(...)

匹配组

(?iLmsux)


(?:...)

(?P...)

>>> re.match('(?Pabc){2}','abcabc').groupdict() {'name': 'abc'}

(?P=name)

>>> re.match(r'(?Pabc)----(?P=name)','abc----abc').group()
'abc----abc'

(?#...)

#后面的内容为注释

(?=...)

匹配的字符串后面的内容需要匹配

>>> re.match(r'phone(?=\d{3})','phone123').group()

'phone'#


(?!...)

匹配的字符后面内容不能匹配
>>> re.match(r'phone(?!\d{3})','phoneabc123').group()
'phone'

(?<=...)

匹配的字符串前面需要匹配

>>> re.search('(?<=\d)def', '1def').group()

'def'

(?

匹配的字符前面不能匹配

>>> re.search('(? 'def'


(?(id/name)yes-pattern|no-pattern)

>>> re.search('(\d)def(?(1)-abc|-123)', '0def-abc').group()
'0def-abc'


\number
\A

匹配字符串的开头
\b

匹配单词边界
\B

\b的反义

\d

[0-9]
\D

[^0-9]
\s

[ \t\r\n\f\v]
\S

非空白字符
\w

[a-zA-Z0-9]
\W

\w的反义
\Z

匹配字符串的结束

评论关闭