各位用户为了找寻关于Python正则表达式经典入门教程的资料费劲了很多周折。这里教程网为您整理了关于Python正则表达式经典入门教程的相关资料,仅供查阅,以下为您介绍关于Python正则表达式经典入门教程的详细内容
本文实例总结了Python正则表达式基本用法。分享给大家供大家参考,具体如下:
正则表达式在平时做文本处理(爬虫程序去解析html中的字段,在分析log文件的时候需要抓取一些关键数据)的时候经常会用到。一般我们会使用到Python的re库。如果正则表达式自己代码中反复被用到的时候,我们可以将这个正则表达式使用re.compile函数转换成一个object方便调用。
match
将输入的字符串从第一个字符开始匹配,如果不匹配将会直接返回空。
search
和match不同,search能自由的在字符串中任一开始位置开始匹配,直到匹配上了。
re中的选项
通常在flag里面可以设置.
re.I
忽略掉大小写
re.L
让w,W,b,B,s和S做本地化识别
re.M
当匹配的时候支持多行匹配.
re.DEBUG
显示正则表达式的调试信息
re.S
让.号匹配本行的全部字符。
sub 替换
? 1 2 3 4 5 6import
re
phone
=
'188-88-88 # this is my phone number'
num
=
re.sub(r
'#.*$'
,'',phone)
# num ==188-88-88
num
=
re.sub(r
'D'
,'',phone)
# num = 1888888
还能使用这个来做代码的转义,有点像在 sublime text里面使用的查找替换。比如说我需要将C语言里面的宏定义转换成lua里面的变量定义
? 1 2 3import
re
print
( re.sub( r
'#defines+([a-zA-Z_]+)s+([a-zA-Z_0-9]+)'
, r
'_G.1 = 2'
,
'#define MAX_RECV_SIZE 100'
) )
#_G.MAX_RECV_SIZE = 100
subn函数类似,只是能定制替换的次数。
findall
将匹配到的内容返回成一个数组,这个应该是比较常用的方法。
? 1 2print
( re.findall(
'd+'
,
'66,88,88,777'
) )
# ['66', '88', '88', '777']
finditer
匹配的内容以迭代器的方式返回,我们可以对这个做循环,返回的时候MatchObject
? 1 2 3 4 5 6 7 8for
num
in
re.finditer(
'd+'
,
'66,88,88,777'
):
print
num.group()
'''
66
88
88
777
'''
split
? 1 2 3 4 5 6 7re.split(pattern, string, maxsplit
=
0
, flags
=
0
)
>>> re.split(
','
,
'Words, words, words.'
)
[
'Words'
,
' words'
,
' words.'
]
>>> re.split(
'W+'
,
'Words, words, words.'
)
[
'Words'
,
'words'
,
'words'
, '']
>>> re.split(
'(W+)'
,
'Words, words, words.'
)
[
'Words'
,
', '
,
'words'
,
', '
,
'words'
,
'.'
, '']
大写的W表示了非字串,这个在语法里面可以查到。如果加了括号,将不会省略掉匹配到的split的字串。最后这个在数组中作为字串分隔符的,.都被保留在数组中了。
escape
这个函数是一个辅助函数,当大量编写正则表达式的时候,可能我们固定的一些字串中包含了正则的保留字串,但是我们不需要让程序当它是re表达式的时候,可以使用这个函数将字串做转换。
? 1 2 3re.escape(
'1234@gmail.com'
)
# result
1234
@gmai.com
备注语法:
希望本文所述对大家Python程序设计有所帮助。