python学习之(五)正则表达式

正则表达式模式语法

元素

含义

.

匹配除\n之外的任何字符

^

匹配字符串的其实部分

$

匹配字符串的结束部分

*

匹配前面的正则表达式的零个或多个匹配项目:贪婪匹配(尽可能多的匹配)

+

匹配前面的正则表达式的1个或多个匹配项目:贪婪匹配(尽可能多的匹配)

匹配前面的正则表达式的零个或1个匹配项目:贪婪匹配(只匹配一个)

*?,+?,??

*、+和?的非贪婪匹配版本(尽可能少的匹配)

{m,n}

匹配前面的正则表达式的m到n个匹配项目(贪婪匹配)

{m,n}?

匹配前面的正则表达式的m到n个匹配项目(非贪婪匹配)

[...]

匹配方括号中包含的字符集中的任意一个

|

匹配前面的或后面的表达式

(...)

匹配圆括号中的正则表达式并指定一个组

(?...)

与(...) 类似,但是不指定一个组

(?P<id>…)

与(...) 类似,该组还将获得名称id

(?P=id)

匹配前面按组名id匹配的任何匹配项目

(?#...)

圆括号中的内容只是注释,对匹配没有影响

(?=…)

向前看断言:如果正则表达式…匹配接下来的内容,则表示匹配,

但是不消耗字符串的任何部分

(?!...)

向反的方向看断言:如果正则表达式…匹配接下来的内容,则表示匹配,

但是不消耗字符串的任何部分

(?<=…)

向后看断言:如果有一个以当前位置为结尾的项目匹配正则表达式…,

则表示匹配(…必须匹配固定长度)

(?<!...)

向反的方向看断言:如果有一个以当前位置为结尾的项目匹配正则表达式…,

则表示匹配(…必须匹配固定长度)

\number

按照编号number匹配以前匹配的任何项目(组是从1到99自动编号的)

\A

匹配一个空白字符串,但是只在整个字符串的起始位置

\b

匹配一个空白字符串,但是只一个单词的起始和结束位置

\B

匹配一个空白字符串,但是不在一个单词的起始和结束位置

\d

匹配一个数字,也就是集合[0-9]中的数字

\D

匹配一个非数字

\s

匹配一个空白字符,也就是集合[\t\n\r\f\v]中的字符

\S

匹配一个非空字符

\w

匹配一个字母或数字字符;除非设置了LOCALE或UNICODE,也就是集合

[a-zA-Z0-9_]中的字符

\W

匹配非字母和数字字符,与\w相反

\Z

匹配一个空白字符串,但是只在整个字符串的末尾匹配

\\

匹配一个反斜线字符

字符集:可以通过在方括号([])中列举一些字符来表示一个模式中的字符集。在一个集合中,除了反斜线符号(\)、反方括号(])、和连字符(-),其他特殊符号都表示器本身,而在这几个符号没有被转义时,必须使用转义来表示。

组:正则表达式可以包含任意数量的组,从1到99.模式字符串忠的圆括号表示一个组。

正则表达式对象方法和属性:

findall、finditer、match、search、split、sub、subn、flags、groupindex、groups、groupdict、pattern

主要介绍match和search

match的原型:match(string[,pos[, endpos]]),匹配时,将返回一个适当的匹配对象。否则,匹配将返回None。注意,这个匹配将隐式锚定string中的起始位置。要想在string中的任何位置使用search

search的原型:search(string[,pos[,endpos]]),通常这样定义:search(string,start=0,end=sys.maxint)

>>> import re

>>> p=re.compile('d')

>>> p.search('dog')

<_sre.SRE_Match object at 0x00AB6D40>

>>> p.search('dog',1) # 没有匹配

下面的可以看出match和search的区别。

>>> p.match('dogd',1)

>>> p.search('dogd',1)

<_sre.SRE_Match object at 0x00AB6D40>

匹配对象:

匹配对象是由正则表达式对象的match和search方法创建和返回的,也是findall方法返回的迭代器中的项目。

 

同时可以直接使用re模块的函数

例如:re.split(pattern, string[, maxsplit=0, flags=0])

>>> re.split('\W+', 'Words, words, words.')

['Words', 'words', 'words', '']

>>> re.split('(\W+)', 'Words, words, words.')

['Words',', ', 'words', ', ', 'words', '.', '']


你可能感兴趣的:(python学习之(五)正则表达式)