这个是我去年在个人博客上写的东西,可以当文档使用。主要是因为处理文本经常要用到正则表达式。无奈自己记性太差,索性将常用的正则表达式用法记录下来,需要时查阅之。
基础部分
- 工具:
- egrep.
egrep '[regular expression]' filename - python re 库
- egrep.
行首行尾
^ : 标记一行的开始位置
$ : 标记一行的结束位置
# 例子
^cat : 匹配以cat为行首的行,例如 catter
cat$ : 匹配以cat为结尾的行,例如 scat
字符类
匹配任意字符
[...] : 匹配中括号中的任意一个字符,中括号称为字符类
# 例子
gr[ea]y : 匹配 grey 或 gray, r 和 y 之间可以是e或者a
sep[ea]r[ea]te : 匹配 seperate 或 separete 或 separate 或 seperete
<H[123456]> : 匹配 <H1> 到 <H6>, 在html匹配中常见
- : 划定字符范围
# 例子
[1-6]=[123456]
[0-9a-fA-F]=[0123456789abcdefABCDEF]
否定字符类
[^...] : 匹配任意不在中括号中的字符,与 [...] 相反
# 例子:
[^1-6] : 匹配不在 1-6 中的字符
q[^u] : 匹配包含 q~, 其中 ~ 为不是字母u的其他字符的所有行
- 当 ^ 在中括号外面时表示行首标识符;当 ^ 在中括号里面时表示否定运算符
使用 '.' 匹配 任意 字符
. : 匹配任意字符
[.] : 无转义,匹配dot
# 例子:
03.19.76 : 匹配 03~19~76,其中~可以是任意字符
03[-./]19[-./]76 : 以分隔符 . - 或 / 匹配 031976
多个正则表达式
- 考虑如何将多个正则表达式结合到一起
| : 或运算, a | b 表示匹配正则表达式或正则表达式b。为了限定或运算范围,必要时用小括号括起来,例如 (a|b)
# 例子
gr(a|e)y = gr[ae]y
^(From|Subject|Date): 匹配以From:或Subject:或Date:开头的行
使用'?'匹配可选字符
- 考虑匹配 colour 或 color,这里的 u 可选出现或不出现
? : 可选运算,u? 表示匹配出现u或不出现u,作用对象为?的前一个字符
# 例子
colou?r = (color|colour)
匹配重复字符
- 考虑一个字符重复多次: goooooooooooooooooood!,但是次数不定
+ : 匹配一个字符1次或多次(至少1次)
* : 匹配一个字符0次或多次(至少0次)
# 例子:
goo+d: 匹配good,goood,goo...od
goo*d: 匹配god, good, ...
<HR +SIZE *= *[0-9]+ *>: 空格可以出现任意多次
| 运算符 | 字符最小出现次数 | 字符最大出现次数 |
|---|---|---|
| ? | 0 | 1 |
| + | 1 | 无限 |
| * | 0 | 无限 |
自定义字符重复次数
u{min, max} : 匹配字符u最小重复min次,最大重复max次。尽可能多地统计
# 例子:
[a-zA-Z]{3,8}: 匹配3至8个连续出现的英文字母(尽可能多)
Python re 模块要点
转义字符
- 上述正则表达式规则基于Linux的egrep。针对Python的re模块,另有一些重要的转义字符可以用
| 字符 | 功能 |
|---|---|
| \d | 匹配数字,即[0-9] 可以写在字符集[...]中 |
| \D | 匹配⾮数字,即不是数字 可以写在字符集[...]中 |
| \s | 匹配空⽩,即空格,tab键 可以写在字符集[...]中 |
| \S | 匹配⾮空⽩字符 可以写在字符集[...]中 |
| \w | 匹配单词字符,即[a-zA-Z0-9_] 可以写在字符集[...]中 |
| \W | 匹配⾮单词字符 可以写在字符集[...]中 |
re 模块常用函数及注意事项
待补充 {:.warning}
练习:常用正则表达式(Python re格式)
- 电子邮箱
\w{1,10}\.?\w{1,10}@(163|gmail|qq).com - 日期
\d{4}[.-/]\d{2}[.-/]\d{2} - HTTP/HTML URL
\<http://[^ ]+\.html?\>
参考资料
- Jeffrey E.F.Friedl, Mastering Regular Expressions
- python——正则表达式(re模块)详解. 版权声明:本文为CSDN博主「nee~」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。