正则表达式re模块

re模块用法:

1、res = re.match('^Liang', 'Liangshuhui') #  如果匹配则有返回,否则为空。注意:match是从头开始匹配,在此处^没用

2、re.search比较常用

3、re.findall

4、res.group() # 查找匹配到的模式

5、re.split(pattern, string, maxsplit=0, flags=0)  #分割

6、re.sub(pattern, repl, string, count=0, flags=0) #替换

 

常用正则表达式符号:

1、".":匹配除\n外的所有符号

2、"^":匹配字符开关

3、$:匹配字符结尾

4、+:匹配前一个字符1次或多次

5、?:匹配前一个字符0次或1次

6、{m}:匹配前一个字符m次

7、{n,m}:匹配前一个字符n到m次

8、|:匹配其左边或右边的字符

9、(...):分组匹配

10、\A:和^一样

11、\Z:和$一样

12、\d:匹配数字

13、\D:匹配非数字

14、\w:匹配[a-zA-Z0-9]

15、\W:与\w相反,即特殊字符

16、'\s':匹配空白字符,\t \n \r 

17、(?p<name>...):分组匹配

如:

A、re.search('(?P<province>[0-9]{2})(?P<city>[0-9]{2})(?P<town>[0-9]{2})', '440181198112248118').groupdict()
{'province': '44', 'city': '01', 'town': '81'}

B、res = re.search('(?P<province>[0-9]{2})(?P<city>[0-9]{2})(?P<town>[0-9]{2})', '440181198112248118').group('city')
res

'01'

C、

re.search('(?P<province>[0-9]{2})(?P<city>[0-9]{2})(?P<town>[0-9]{2})', '440181198112248118').group()
'440181'

18、匹配反斜杠:建议r'\\'

 

匹配模式:

re.I:忽略大小写

re.DOTALL或re.S:单行模式改变了点号(.)的匹配行为

re.M:多行模式,在多行模式下,^除了匹配整个字符串的起始位置,还匹配换行符后面的位置;$除了匹配整个字符串的结束位置,还匹配换行符前面的位置.

 

非贫婪模式切换:在"*","?","+","{m,n}"后面加上?,使贪婪变成非贪婪

 

前瞻后顾:未完待上

posted on 2019-04-04 11:35  Treelight  阅读(158)  评论(0编辑  收藏  举报