一 正则表达式: 正则表达式是对字符串串操作的⼀一种逻辑公式. 我们⼀一般使⽤用正则表达式对字符串串进⾏行行匹 配和过
优点: 灵活, 功能性强, 逻辑性强
缺点: 上⼿手难. ⼀一旦上⼿手, 会爱上这个东⻄
⼯具: 各⼤大⽂文本编辑器⼀一般都有正则匹配功能. 我们也可以http://tool.chinaz.com/regex/进⾏行行在线测试.
二
字符组:单⽤用[]括起来. 在[]中出现的内容会被匹配. 例例如:[abc] 匹配a或b或c [a-zA-Z0-9]
1 基本元字符
. 匹配除换⾏行行符以外的任意字符 w 匹配字⺟母或数字或下划线 s 匹配任意的空⽩白符 d 匹配数字 匹配⼀一个换⾏行行符 匹配⼀一个制表符 匹配⼀一个单词的结尾 ^ 匹配字符串串的开始 $ 匹配字符串串的结尾 W 匹配⾮非字⺟母或数字或下划线 D 匹配⾮非数字 S 匹配⾮非空⽩白符 a|b 匹配字符a或字符b () 匹配括号内的表达式,也表示⼀一个组 [...] 匹配字符组中的字符 [^...] 匹配除了了字符组中字符的所有字符
2量词
* 重复零次或更更多次 + 重复⼀一次或更更多次 ? 重复零次或⼀一次 {n} 重复n次 {n,} 重复n次或更更多次 {n,m} 重复n到m次
注意:在量词中的 *, +, {} 都属于贪婪匹配. 就是尽可能多的匹配到结果.
在使⽤用.*后⾯面如果加了了? 则是尽可能的少匹配. 表⽰示惰性匹配
.*?x的特殊含义 找到下⼀一个x为⽌止. x结尾
6. 转义 在正则表达式中, 有很多有特殊意义的是元字符, ⽐比如 和s等,如果要在正则中匹 配正常的" "⽽而不不是"换⾏行行符"就需要对""进⾏行行转义, 变成'\'.在python中, ⽆无论是正则表达式, 还 是待匹配的内容, 都是以字符串串的形式出现的, 在字符串串中也有特殊的含义, 本身还需要转 义. 所以如果匹配⼀一次" ", 字符串串中要写成'\n', 那么正则⾥里里就要写成"\\n",这样就太麻烦了了. 这个时候我们就⽤用到了了r' '这个概念, 此时的正则是r'\n'就可以了了.