正则表达式一直是计算机领域经久不衰的话题,说简单也简单,简单在语法,内容不多30分钟足以入门;说难也难,难在变化,一个复杂正则的理解和一个复杂问题的简单正则实现,都是颇为考验人的。
准备写两篇文章记录对正则的学习,一篇记录基础语法(看起来超简单),一篇记录诸多细节问题(其实远没有那么简单)
不同语言对正则的实现有些微差异,本文参考python实现
Python语言本身不支持正则表达式,依赖re模块
这句话意味着你用原生string的replace()\split()函数都是无法用正则的
Python常用匹配模式
语法 | 说明 | 示例 |
---|---|---|
. | 匹配换行符\n以外的所有字符 | b.c 匹配 bac 或 bdc |
* | 匹配一个字符0次或多次 | b*c 匹配 c 或 bbbc |
+ | 匹配一个字符1次或多次 | b+c 匹配 bc 或 bbbc |
? | 匹配一个字符0次或1次 | b?c 匹配 c 或者 bc |
{m} | 匹配前一个字符 m 次 | b{2}c 匹配 bbc |
{m,n} | 匹配前一个字符 m 至 n 次 | b{2,5}c 匹配 bbc 或者 bbbbc |
[abc] | 匹配 [] 内的任意字符 | [bc] 匹配 b 或者 c |
\d | 匹配数字 [0-9] | b\dc 匹配 b1c 等 |
\D | 匹配非数字,等价于 [^\d] | b\Dc 匹配 bAc |
\s | 匹配空白字符 | b\sc 匹配 b c |
\S | 匹配非空白字符,等价于[^s] | b\Sc 匹配 bac |
\w | 匹配 [A-Za-z0-9_] | b\wc 匹配 bAc 等 |
\W | 等价于 [^\w] | b\Wc 匹配 b c |
\ | 转义字符 | b\c 匹配 b\c |
^ | 匹配字符串开头 | bc 匹配句首的 bc |
$ | 匹配字符串末尾 | bc$ 匹配以 bc 结尾的字符串 |
\A | 仅匹配字符串开头 | \Abc 匹配字符串开头的 bc |
\Z | 仅仅匹配字符串末尾 | bc\Z 匹配字符串末尾的 bc |