re模块
pa=re.compile(r'imooc')#生成正则模板对象
ma=pa.match(str)#用模板匹配字符串,返回正则对象
ma.group()#将匹配的结果以字符串形式或元组形式返回
ma.groups()#将匹配结果以元组形式返回
ma.string#被匹配的字符串
ma.span()#被匹配的部分的序列号
pa=re.compile(r'imooc',re.I)#re.I表示大小写不敏感
ma=re.match(r'imooc',str)#不用模板直接生成正则对象
正则表达式语法
-
匹配单个字符
.#匹配任意字符
[...]#匹配字符集中的任意一个字符
\w#匹配任意一个单词字符[a-zA-Z0-9]
\W#匹配任意一个非单词字符[^a-zA-Z0-9]
\d / \D#匹配任意一个数字/非数字字符
\s / \S#匹配任意一个空白/非空白字符 -
匹配多个字符
*#匹配前一个字符0次或无限次
+#匹配前一个字符1次或无限次
?#匹配前一个字符0次或1次
{m} / {m,n}#匹配前一个字符m次或m到n次*? / +? / ??#匹配模式变为非贪婪(尽可能少匹配)
-
边界匹配
^#指定匹配必须出现在字符串的开头或行的开头
$#指定匹配必须出现在以下位置:字符串结尾、字符串结尾的\n之前或行的结尾。
\A / \Z#指定的字符串必须出现在开头/结尾 -
分组匹配
|#匹配左右任意一个表达式
(ab)#括号中的表达式作为一个分组
<number>#引用编号为num的分组匹配到的字符串(重复)
(?P<name>)#给分组起一个别名
(?P=name)#引用别名为name的分组匹配字符串(重复)
re模块方法
match#从字符串的开头开始查找匹配(返回正则对象#就是match对象)
search#在字符串中进行查找匹配(返回正则对象)
findall#查找所有匹配的值并返回一个列表
sub#将字符串中匹配正则表达式的部分替换为其他值(返回字符串)
eg:
str='value=1000'
re.sub(r'\d+','1001',str)
>>'value=1001'
其中第二个参数也可以为函数名,则匹配的部分函数处理后的返回结果将替换原来的部分
split#用匹配到的部分来分割字符串,返回一个列表
eg:
re.split(r':| ','imooc:c c++ python java')
>>['imooc','c','c++','python','java']
网友评论