正则表达式-入门

正则表达式一直是计算机领域经久不衰的话题,说简单也简单,简单在语法,内容不多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