re模块
Posted aiyumo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了re模块相关的知识,希望对你有一定的参考价值。
^:匹配字符串的开头
$:匹配字符串的末尾。
.:匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符。
[...]:用来表示一组字符,单独列出:[amk] 匹配 ‘a‘,‘m‘或‘k‘
[^...] : 不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符。
re*: 匹配0个或多个的表达式。
re+:匹配1个或多个的表达式。 有几个匹配几个
re?: 匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式 只匹配符合条件最少字符
re{ n}:精确匹配 n 个前面表达式。例如, o{2} 不能匹配 "Bob" 中的 "o",但是能匹配 "food" 中的两个 o。
re{ n,}:匹配 n 个前面表达式。例如, o{2,} 不能匹配"Bob"中的"o",但能匹配 "foooood"中的所有 o。
‘|‘:匹配|左或|右的字符,re.search(‘abc|ABC‘,‘ABCBabcCD‘).group()) 返回结果ABC
(re):对正则表达式分组并记住匹配的文本
"o{1,}" 等价于 "o+"。"o{0,}" 则等价于 "o*"。
(?imx):正则表达式包含三种可选标志:i, m, 或 x 。只影响括号中的区域。
[a-z]:匹配a-z之间任意字符 [0-9] [A-Z] 相同
[^a-z] :匹配除a-z之间的数
d :匹配任意数字等价[0-9]
D:匹配一个非数字 [^0-9]
w :匹配包括下划线的任何单词字符。等价于‘[A-Za-z0-9_]‘。
W:匹配任何非单词字符。等价于 ‘[^A-Za-z0-9_]‘。
s:匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ f v]。
S:匹配任何非空白字符。等价于 [^ f v]。
匹配三种方法:
re.match(正则表达式,字符串) 从头开始匹配的
re.search():匹配到一个就返回,匹配不到返回空
re.findall:返回所有匹配结果,findall没有group()方法
例子:
print(re.match(‘[0-9]{1,3}‘,‘aaalb345d67b‘)) # None
print(re.search(‘[0-9]{1,3}‘,‘aaalb345d67b‘)) # <_sre.SRE_Match object; span=(5, 8), match=‘345‘>
print(re.findall(‘[0-9]{1,3}‘,‘aaalb345d67b‘)) # [‘345‘, ‘67‘]
具体每种匹配规则的实例:
print(re.match(‘aaa?‘,‘aaalb345d67b‘)) # <_sre.SRE_Match object; span=(0, 3), match=‘aaa‘>
print(re.match(‘^a‘,‘aaalb345d67b‘)) #<_sre.SRE_Match object; span=(0, 1), match=‘a‘>
print(re.search(‘b$‘,‘aaalb345d67b‘)) #<_sre.SRE_Match object; span=(11, 12), match=‘b‘>
print(re.match(‘a.‘,‘aaalb345d67b‘)) #<_sre.SRE_Match object; span=(0, 2), match=‘aa‘>
print(re.match(‘a*‘,‘aaalb345d67b‘)) # <_sre.SRE_Match object; span=(0, 3), match=‘aaa‘>
print(re.match(‘a+‘,‘aaalb345d67b‘)) #<_sre.SRE_Match object; span=(0, 3), match=‘aaa‘>
print(re.match(‘a.+‘,‘aaalb345d67b‘)) # <_sre.SRE_Match object; span=(0, 12), match=‘aaalb345d67b‘>
print(re.match(‘a.*‘,‘aaalb345d67b‘)) # <_sre.SRE_Match object; span=(0, 12), match=‘aaalb345d67b‘>
print(re.findall(‘a{2}‘,‘aaalb345d67b‘)) # <_sre.SRE_Match object; span=(0, 2), match=‘aa‘>
print(re.search(‘abc|ABC‘,‘ABCBabcCD‘)) # <_sre.SRE_Match object; span=(0, 3), match=‘ABC‘>
print(re.search(‘abc|ABC‘,‘ABCBabcCD‘).group()) # ABC
# findall没有group()方法
print(re.findall(‘abc|ABC‘,‘ABCBabcCD‘)) # [‘ABC‘, ‘abc‘]
以上是关于re模块的主要内容,如果未能解决你的问题,请参考以下文章