python正则小结
注意pattern字符串前要加r 原始字符串
元字符
. 匹配除换行的任意字符
^ 匹配开头
$ 匹配结尾
表示重复
星号 匹配0-多次
+ 匹配1到多次
? 匹配0次或1次
{m,n} 匹配m次至n次
后面跟一个?表示非贪婪匹配
[ab] 取一个(一般元字符在其中是普通字符)
[]中的元字符
-在其中表示至
^表示非
\d类似的
() 表示分组
| 分组内的或
\
1 后面跟元字符转义
2 后面跟普通字符实现特殊功能
\d [0-9]
\D [^0-9]
\s 任何空白字符 [\t\n\r\f\v]
\S 任意非空白字符
\w [0-9a-zA-Z_]
\W [^0-9a-zA-Z_]
\b 匹配一个单词边界,指单词到空格处
\B 匹配非单词边界
3 引用序号对应的字组,相当于把小括号的内容放倒此处
函数
re.findall(pattern, string) 找到之后返回符合组的列表,组开头有?:则返回整个
re.search(pattern, string) 只找到一个.返回一个match对象 .group()返回字符串
re.match(pattern, string) 只在开头匹配,返回一个match对象.group()返回字符串
re.compile(pattern) 多次使用一个正则时,有必要生成一个对象
re.finditer(pattern, string) 返回一个可迭代对象,每个元素是match对象
re.sub(pattern, repl, string, count=0) 替换count个,0为所有
re.subn(pattern, repl, string) 功能同上,返回一个元组(替换完的字符串,替换次数)
re.split(pattern, string)
以上函数都有参数,编译标识 flags
re.I 匹配对大小写不敏感
re.S 使.包含换行在内的所有字符
match对象的方法
group() 返回匹配到的字符串
start() 返回匹配到的起始位置
end() 返回匹配到的结束位置
span() 返回一个元组,(起始偏移,结束偏移)
group(数字) 返回第几个组