库
re
库函数
match
从字符串的起始位置匹配,且仅匹配一次.
匹配成功则返回匹配的对象,否则返回None
t = 'www.runoob.com' matchObj = re.match("(.*?)\.(.*)n(.*)b(.*)m",t) print(matchObj.span()) for i in range(0,5): print("group({}):[{}]".format(i,matchObj.group(i)))
search
扫描整个字符串并返回第一个成功的匹配
匹配成功则返回匹配的对象,否则返回None
sub
替换
findall
匹配字符串中所有的字符串
只要括号中的字符
语法
原子表
实例 | 描述 |
---|---|
[Aa]bc | 匹配Abc或abc |
[a-z] | 匹配a到z之间的字符 |
[0-9A-Z] | 匹配0到9和A到Z之间的字符 |
[^1-5a-f_] | 匹配除数字1到5,a-f和下划线_之外的使用字符 |
[1-5^a-f] | 匹配数字1到5,^和a到f之间的字符 |
特殊字符
实例 | 描述 |
---|---|
. | 匹配除\n 之外的任意字符,若想匹配\n ,可使用原子表[.\n] ,也可使用参数re.S |
\w | 匹配包括数字,字母,下划线的字符;等价于:[0-9a-zA-Z_] |
\W | 匹配除数字,字母,下划线之外的字符;等价于:[^0-9a-zA-Z_] |
\s | 匹配空白字符,包括空格,制表符,换页符等;等价于:[\t \n\r\v] |
\S | 匹配非空白字符;等价于:[^\t \n\r\v] |
\d | 匹配数字;等价于[0-9] |
\D | 匹配非数字;等价于[^0-9] |
模式
实例 | 描述 |
---|---|
* | 匹配前面的原子0次或多次;贪心匹配,可在其后加? 置为非贪心匹配 |
+ | 匹配前面的原子1次或多次;贪心匹配,可在其后加? 置为非贪心匹配 |
? | 匹配前面的原子0次或1次 |
{n} | 匹配前面的原子n次 |
{n,} | 匹配前面的原子至少n次 |
{n,m} | 匹配前面的原子至少n次,至多m次 |
() | 原子组 |
a|b | 先匹配表达式a,若表达式a不匹配,则使用表达式b进行匹配 |
(?:abc) | 匹配abc,但不表示一个组,结果不包括此组 |
(?#ab) | 注释 |
(?imx:re) | 此组中的表达式满足imx标志;可选为i,m,x |
(?-imx:re) | 此组中表达式不满足imx标志;可选为i,m,x |
\A | 只有写在表达式最前才生效;从字符串头开始匹配,直到匹配成功一次或遇到换行符;re.M参数无效 |
^ | 只有写在表达式最前才生效;从字符串头开始匹配,直到匹配成功一次或遇到换行符;使用re.M参数会从每行行首开始匹配 |
\Z | **只有写在表达式末尾才生效;**匹配字符串末尾;re.M参数无效 |
$ | **只有写在表达式末尾才生效;**匹配字符串末尾;使用re.M参数会从每行行尾匹配 |
\b | 位置决定作用:在表达式最前面,则匹配每个单词开头;在表达式最后,则匹配每个单词1结尾 |
\B | 位置决定作用:在表达式最前面,则不匹配每个单词开头;在表达式最后,则不匹配每个单词结尾 |
\G | 匹配最后匹配完成的位置 |
(?Pre) | 匹配re,并将匹配的文本放置于名称为name 的组中; r.group(‘name’) |
参数
实例 | 描述 |
---|---|
re.I | 使匹配对大小写不敏感 |
re.M | 可以匹配多行;影响^ 和$ |
re.S | 使. 可以匹配\n 在内的所有字符 |
re.X | 使表达式中可以使用python注释 |
re.L | 使用本地化识别(locale-aware)匹配 |
re.U | 根据Unicode字符集匹配字符;将会影响\w,\W,\b,\B |
示例
反向引用
\num,代表前面第几个括号的内容
s = "<div>北京</div><body>南<<>>京</body>"
p = re.compile(r'<(.*?)>(.*?)</\1>')
r = re.findall(p,s)
print(r)
#[('div', '北京'), ('body', '南<<>>京')]
或运算|
首先匹配|前的表达式,不匹配才开始匹配后面表达式
单词是指两边是空白字符和特殊字符
$#等
的字符串 ↩︎