本文摘自php中文网,作者PHP中文网,侵删。
1.正则表达式的常用符号1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | '.' 默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行
'^' 匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r "^a" , "\nabc\neee" ,flags = re.MULTILINE)
'$' 匹配字符结尾,或e.search( "foo$" , "bfoo\nsdfsf" ,flags = re.MULTILINE).group()也可以
'*' 匹配 * 号前的字符 0 次或多次,re.findall( "ab*" , "cabb3abcbbac" ) 结果为[ 'abb' , 'ab' , 'a' ]
'+' 匹配前一个字符 1 次或多次,re.findall( "ab+" , "ab+cd+abb+bba" ) 结果[ 'ab' , 'abb' ]
'?' 匹配前一个字符 1 次或 0 次
'{m}' 匹配前一个字符m次
'{n,m}' 匹配前一个字符n到m次,re.findall( "ab{1,3}" , "abb abc abbcbbb" ) 结果 'abb' , 'ab' , 'abb' ]
'|' 匹配|左或|右的字符,re.search( "abc|ABC" , "ABCBabcCD" ).group() 结果 'ABC'
'(...)' 分组匹配,re.search( "(abc){2}a(123|456)c" , "abcabca456c" ).group() 结果 abcabca456c
'\A' 只从字符开头匹配,re.search( "\Aabc" , "alexabc" ) 是匹配不到的
'\Z' 匹配字符结尾,同$
'\d' 匹配数字 0 - 9
'\D' 匹配非数字
'\w' 匹配[A - Za - z0 - 9 ]
'\W' 匹配非[A - Za - z0 - 9 ]
's' 匹配空白字符、\t、\n、\r , re.search( "\s+" , "ab\tc1\n3" ).group() 结果 '\t'
|
二、常用语法
2.1 re.match 从头开始匹配
re.mathch(pattern,string,flags)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | >>> a = re.match( "i" , 'inet 172.17.0.1 netmask 255.255.0.0 broadcast 0.0.0.0' )
>>> a.group()
'i'
>>> a = re.match( "n" , 'inet 172.17.0.1 netmask 255.255.0.0 broadcast 0.0.0.0' )
>>> a.group()
Traceback (most recent call last):
File "<stdin>" , line 1 , in <module>
AttributeError: 'NoneType' object has no attribute 'group'
>>> print (a)
None
>>> a = re.match( "\w{4,10}" , 'inet 172.17.0.1 netmask 255.255.0.0 broadcast 0.0.0.0' )
>>> a.group()
'inet'
|
2.2 re.search
re.search函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回,如果字符串没有匹配,则返回None。
1 2 3 | >>> a = re.search( "\d+" , "sd234345resss" )
>>> a.group()
'234345'
|
2.3 group 和 groups
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | >>> a = re.search( "([a-z]*)(\d+)([a-z]*)" , "sd234345resss" ).group()
>>> a
'sd234345resss'
>>> a = re.search( "([a-z]*)(\d+)([a-z]*)" , "sd234345resss" ).group( 0 )
>>> a
'sd234345resss'
>>> a = re.search( "([a-z]*)(\d+)([a-z]*)" , "sd234345resss" ).group( 1 )
>>> a
'sd'
>>> a = re.search( "([a-z]*)(\d+)([a-z]*)" , "sd234345resss" ).group( 2 )
>>> a
'234345'
>>> a = re.search( "([a-z]*)(\d+)([a-z]*)" , "sd234345resss" ).group( 3 )
>>> a
'resss'
>>> a = re.search( "([a-z]*)(\d+)([a-z]*)" , "sd234345resss" ).groups()
>>> a
( 'sd' , '234345' , 'resss' )
|
2.4 re.findall(pattern,string,flags=0)
上述两中方式均用于匹配单值,即:只能匹配字符串中的一个,如果想要匹配到字符串中所有符合条件的元素,则需要使用 findall。
1 2 3 | >>> a = re.findall( "\d+" , "sd234/34*5resss" )
>>> a
[ '234' , '34' , '5' ]
|
2.5 re.sub(pattern,repl,string,count=0,flags=0)
替换匹配到的字符串
1 2 3 4 | >>> s = "123abc456"
>>> a = re.sub( "\d+" , "SUB" ,s)
>>> a
'SUBabcSUB'
|
相比于str.replace功能更强大
2.6 re.split(pattern, string, maxsplit=0, flags=0)
根据指定匹配进行分组
1 2 3 4 5 6 7 8 9 10 | s = "123aaa345bbb789ccc"
>>> a = re.split( "[a-z]*" ,s)
>>> a
[ '123' , '345' , '789' , '']
>>> a = re.split( "[a-z]*" ,s, 1 )
>>> a
[ '123' , '345bbb789ccc' ]
>>> a = re.split( "[a-z]*" ,s, 2 )
>>> a
[ '123' , '345' , '789ccc' ]
|
以上就是python中re正则模块详解的详细内容,更多文章请关注木庄网络博客!!
相关阅读 >>
用tensorflow实现lasso回归和岭回归算法的示例
Python如何去除字符串中不想要的字符
Python爬虫对dota排行榜爬取的实例
py文件怎么打开?
Python os.chmod()方法是什么?它能起到什么作用?
Python中常用列表方法分享
哪些网站全用Python
爬虫的解析方式一:josn解析
Python缺点是什么
Python是什么公司开发
更多相关阅读请进入《Python》频道 >>
人民邮电出版社
python入门书籍,非常畅销,超高好评,python官方公认好书。
转载请注明出处:木庄网络博客 » python中re正则模块详解