正则表达式是对字符串操作的一种逻辑公式. 我们一般使用正则表达式对字符串进行匹
配和过滤. 使用正则的优缺点:
优点:灵活,功能性强,逻辑性强
缺点:上手难,记忆性的东西比较多
http://tool.chinaz.com/regex/ 正则表达式进行在线测试
元字符: 元字符是正则表达式的灵魂.
字符组:用[]进行括起来,[a-z]表示a-z所有的小写字母,[0-9]表示0-9的所有整数
简单的元字符:
. 匹配除换行符以外任意字符
w 匹配字母下划线,数字 W匹配除非字母,数字,下划线的
s 匹配任意的空白符 S匹配非空白
d匹配所有的数字 D 匹配非数字
匹配换行符 a|b a或者b
匹配所有的制表符 () 一个组,在pycharm中表示优先级
匹配单词的结尾 ^ 匹配字符串的开始
[]匹配字符组内字符 [^ ] 匹配除字符组中外的所有字符
$匹配结尾
量词
*重复或者跟多次 +重复1或者跟多次
?重复0或者1次 {n}重复N次
{n,m} 重复n-m次
贪婪匹配: 在量词中* + {}都是贪婪匹配,就尽可能匹配到多的结果
惰性匹配: 在匹配中使用 .*?就是尽可能少的匹配,可能是0或者是1
5. 分组
对一串有固有格式的字符串进行处理的使用,就要用上分组
比如身份证表达的方式:^[1-9]d{14}(d{2}[0-9x])?$ 首先是定义开头必须是1-9的数字,然后首字母后面要跟14位数字,把最后 三位分为一组,最后一个数字有为X的可能
6. 转义
在正则表达式中, 有很多有特殊意义的是元字符, 比如
和s等,如果要在正则中匹
配正常的"
"而不是"换行符"就需要对""进行转义, 变成'\'.在python中, 无论是正则表达式, 还
是待匹配的内容, 都是以字符串的形式出现的, 在字符串中也有特殊的含义, 本身还需要转
义. 所以如果匹配一次"
", 字符串中要写成'\n', 那么正则式就要写成成"\\n",这样就太麻烦了,这个时候我们就用到r"
"这个概念,此时r"
"就可以了.