Python 正则表达式
正则表达式(RegularExpression, re)
是一个计算机科学的概念
用于使用单个字符串来描述,匹配符合某个规则的字符串
常常用来检索,替换某些模式的文本
正则的写法
.(点号): 表示任意一个字符,除了\n,比如查找所有的一个字符 .
[]: 匹配中括号中列举的任意字符,比如[L,Y,0], LLY, Y0, LIU
\d: 任意一个数字
\D: 除了数字都可以
\s: 表示空格,tab 键
\S: 除了空白符号
\w: 单词字符,就是 a-z, A-Z, 0-9, _
\W: 除了“\w”表示的都可以
: 表示前面内容重复零次或者多次, \w
+: 表示前面内容至少出现一次
?: 前面才出现的内容零次或者一次
{m,n}: 允许前面内容出现最少 m 次,最多 n 次
^: 匹配字符串的开始
$: 匹配字符串的结尾
\b: 匹配单词的边界
(): 对正则表达式内容进行分组,从第一个括号开始,编号逐渐增大
\A: 只匹配字符串开头,\Aabcd, 则 abcd
\Z: 只匹配字符串末尾,abcd\Z, abcd
|: 左右任意一个
(?P<name>...): 分组,除了原来的编号再制定一个别名,(?P<id>12345){2}, 1234512345
(?P=name): 引用分组
RE 使用大致步骤
使用 compile 将表示正则的字符串编译为一个 pattern 对象
通过 pattern 对象提供一系列方法度文本进行查找匹配,获得匹配结果,一个 Match 对象
最后使用 Match 对象提供的属性和方法获得信息,根据需要进行操作
RE 常用函数
group(): 获得一个或者多个分组匹配的字符串,当要获得整个匹配的子串时,直接使用 group 或者 group(0)
start: 获取分组匹配的子串在整个字符串中的起始位置,参数默认 0
end: 获取分组匹配的子串在整个字符串中的结束位置,默认为 0
span: 返回的结构技术(start(group), end(group))
查找
search(str, [, pos[, endpos]]): 在字符串中查找匹配,pos 和 endpos 表示起始位置
findall: 查找所有
finditer:查找,返回一个 iter 结果
sub 替换
sub(rep1, str[, count])
匹配中文
大部分中文表示范围是[u4e00-u9fa5], 不包括全角标点
贪婪和非贪婪
贪婪:尽可能多的匹配, (*)表示贪婪匹配
非贪婪:找到符合条件的最小内容即可,(?)表示非贪婪
正则默认使用贪婪匹配
版权声明: 本文为 InfoQ 作者【若尘】的原创文章。
原文链接:【http://xie.infoq.cn/article/49232cbbc52d579887d873c62】。文章转载请联系作者。
评论