python正则表达式re模块详细介绍

2019-10-06 15:42:42刘景俊


>>> m = re.match(r"(?P<first_name>w+) (?P<last_name>w+)", "Malcolm Reynolds")
>>> m.groupdict()
{'first_name': 'Malcolm', 'last_name': 'Reynolds'}

start([group])
end([group])

返回的是:被组group匹配到的子串在原字符串中的位置。如果不指定group或group指定为0,则代表整个匹配。如果group未匹配到,则返回 -1。
对于指定的m和g,m.group(g)和m.string[m.start(g):m.end(g)]等效。
注意:如果group匹配到空字符串,m.start(group)和m.end(group)将相等。
例如:

>>> m = re.search('b(c?)', 'cba')
>>> m.start(0)
1
>>> m.end(0)
2
>>> m.start(1)
2
>>> m.end(1)
2
下面是一个把email地址里的“remove_this”去掉的例子:

>>> email = "tony@tiremove_thisger.net"
>>> m = re.search("remove_this", email)
>>> email[:m.start()] + email[m.end():]
'tony@tiger.net'

span([group])
返回一个元组: (m.start(group), m.end(group))

pos
就是传给RE对象的search()或match()方法的参数pos,代表RE开始搜索字符串的位置。

endpos
就是传给RE对象的search()或match()方法的参数endpos,代表RE搜索字符串的结束位置。

lastindex
最后一次匹配到的组的数字序号,如果没有匹配到,将得到None。
例如:(a)b、((a)(b))和((ab))正则去匹配'ab'的话,得到的lastindex为1。而用(a)(b)去匹配'ab'的话,得到的lastindex为2。

lastgroup
最后一次匹配到的组的名字,如果没有匹配到或者最后的组没有名字,将得到None。

re
得到本Match对象的正则表达式对象,也就是执行search()或match()的对象。

string
传给search()或match()的字符串。


后面的例子就略了吧,文中已经加了很多我自己的例子了,需要更多例子的话,参照英文原文吧(https://docs.python.org/2/library/re.html)。

PS:关于正则表达式,这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

JavaScript正则表达式在线测试工具:
http://tools.jb51.net/regex/javascript

正则表达式在线生成工具:
http://tools.jb51.net/regex/create_reg