正则表达式:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
在线测试http://tool.chinaz.com/regex/
1.元字符
量词 | 匹配内容 |
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母或数字或下划线 |
\s | 匹配任意的空白符 |
\d | 匹配数字 |
\n | 匹配一个换行符 |
\t | 匹配一个制表符 |
\b | 匹配一个单词的结尾 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结尾 |
\W | 匹配非字母或数字或下划线 |
\D | 匹配非数字 |
\S | 匹配非空白符 |
a|b | 匹配字符a或字符b |
() | 匹配括号内的表达式,也表示一个组 |
[...] | 匹配字符组中的字符 |
[^...] | 匹配除了字符组中字符的所有字符 |
2.量词
量词 | 用法说明 |
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
3.惰性匹配和贪婪匹配
贪婪匹配:尽可能多的匹配到结果. ` * `, `+`, `{}`都是贪婪匹配
惰性匹配:尽可能少的匹配 . `?`是惰性匹配
正则 | 待匹配字符 | 匹配 结果 | 说明 |
a. | abcdefgac | ab ac | 只匹配a和a后面一个字符 |
a+ | abcdefgac | a a | a出现一次或多次 |
a.* | abcdefgac | abcdefgac | 贪婪匹配 a后面的都能匹配 |
a.? | abcdefgac | 空 | 惰性匹配,"a." |
^a. | abcdefgac | ab | 只从开头匹配"a." |
a.$ | abcdefgac | ac | 只匹配结尾的"a.$" 以acc结尾就无法匹配 |
4.分组
正则中用()进行分组,()的优先级最高
\1获取第一个分组内的内容,(数小括号)
5.转义
如果要在正则中匹配正常的"\n"⽽不是"换⾏符"就需要对"\"进⾏转义, 变成'\\'.在python中, ⽆论是正则表达式, 还
是待匹配的内容, 都是以字符串的形式出现的, 在字符串中\也有特殊的含义, 本身还需要转义. 所以如果匹配⼀次"\n", 字符串中要写成'\\n', 那么正则⾥就要写成"\\\\n",这样就太麻烦了.
此时的正则是r'\\n'就可以做到(在前面加r表示字符串不进行转义,按照原样匹配,一个r解决所有.....)
6.字符组
用[ ]括起来,在[ ]内的内容会被匹配
例如[abc] 匹配a或b或c