学习网站
1.正则在线测试网站:https://regexr-cn.com/
2.正则练习:https://codejiaonang.com/
正则常用符号
[]
允许匹配一组可能出现的字符,如’[pP]thon’可以匹配’pthon’、‘Pthon’、‘Ppthon’-
代表区间,比如[a-z]可以匹配所有小写字母^
代表非集,[^0-9]
匹配除了数字以外的任何字符\w
与任意单词字符匹配,任意单词字符表示[A-Z]
、[a-z]
、[0-9]
、_
\d
与任意数字匹配\s
快捷方式可以匹配空白字符,比如空格,tab、换行等\b
匹配的是单词的边界,\bmaster\b
就仅匹配有边界的master
单词- 快捷方式也可以取反,例如对于
\w
的取反为\W
^
放在区间外面表示匹配字符串开头$
放在字符串后面表示匹配以字符串结尾的字符串.
字符代表匹配任何单个字符,它只能出现在方括号以外,.
字符只有一个不能匹配的字符,也就是换行符(\n
)?
的作用就是匹配它之前的字符0
次或1
次。- 在一个字符组后加上
{N}
就可以表示在它之前的字符组出现N
次 {M,N}
在一个字符组后面加上重复区间,M
是下界而N
是上界,不写上界则可上界匹配无数个\d{3,4}
既可以匹配3
个数字也可以匹配4
个数字,不过当有4
个数字的时候,优先匹配的是4
个数字,这是因为正则表达式默认是贪婪模式,即尽可能的匹配更多字符,而要使用非贪婪模式,我们要在表达式后面加上?
号,则有3个优先匹配3个+
等价于{1,}
,*
等价于{0,}
()
一种将表达式分组的机制,当使用分组时,除了获得整个匹配。还能够在匹配中选择每一个分组,用于提取字符串。|
或者(or)条件,例如要提取所有图片文件的后缀名,可以在各个后缀名之间加上一个|
符号(?:表达式)
非捕获分组,不需要提取其内容,但是需要将其分离,有分组的特性- 分组的回溯引用,使用
\N
可以引用编号为N
的分组,也就是之前第N个分组 - 正向先行断言:
(?=表达式)
,指在某个位置向右看,表示所在位置右侧必须能匹配表达式
- 反向先行断言
(?!表达式)
的作用是保证右边不能出现某字符 - 正向后行断言:
(?<=表达式)
,指在某个位置向左看,表示所在位置左侧必须能匹配表达式
- 反向后行断言:
(?<!表达式)
,指在某个位置向左看,表示所在位置左侧不能匹配表达式