python模块 - re

概述

正则表达式是处理字符串的强大的工具,检索字符串,替换,匹配验证等等。

常用的匹配规则

1
2
3
4
5
6
7
8
9
\w 匹配字母,数字和下划线
\d 匹配数字
\s 匹配任何空白字符
\z 匹配字符串结尾,如果有换行符,一起匹配
\n 匹配换行
\t 匹配制表符
^ 匹配开头
$ 匹配结尾
. 匹配任何字符,除了换行符,除非指定re.DOTALL

python的re模块

注: .*? 遇到换行符就不管用了,除非加上re.S

match

match 尝试从字符串开头开始匹配正则表达式,如果成功就返回,如果没有就返回一二None

1
2
3
4
5
6
7
8
9
10
11
12
13
>>> import re
>>> a = "Hello World"
>>> b = re.match('\w+\s',a,re.S)
>>> b
<_sre.SRE_Match object; span=(0, 6), match='Hello '>
>>> b.span()
(0, 6)
>>> b.group()
'Hello '
>>> b.group(0)
'Hello '

None 是false

扫描整个字符串,如果符合就返回,否则返回none

1
2
3
4
5
6
7
>>> import re
>>> a = "Hello World"
>>> c = re.search('\s\w+',a)
>>> c
<_sre.SRE_Match object; span=(5, 11), match=' World'>
>>> c.group()
' World'

findall

当需要提取全部匹配的内容,需要使用findall,使用search只能取回第一个。如果在匹配的时候用括号指定了,那么返回中的列表就会包含元祖

1
2
3
>>> d = re.findall(r'He(l)l(o)',a)
>>> d
[('l', 'o')]

sub

替换文本,返回替换好的字符串

1
re.sub('\s\w+','johnw',a)