正则表达式中,单纯的字符就是准确匹配,即必须完全一样。
常用的匹配模式:
\d
:digit,匹配单个数字,相当于[0-9]
。\D
:non-digit,匹配非数字,相当于[^0-9]
。\w
:word,匹配单个数字或字母或下划线,相当于[A-Za-z0-9_]
。\W
:non-word,匹配非数字字母及下划线,相当于[^A-Za-z0-9]
。\s
:space and tab,匹配空格和Tab。.
:匹配单个任意字符。[...]
:匹配里面的任意某个模式,例如对于[abc]
,字符串a
是匹配的。[^ ]
:匹配不匹配于方括号内模式的单个字符。^
:匹配后面表达式作为字符串或行的开头的情况,例如^[hc]at
,匹配hat
或cat
,而且这个hat
或cat
必须作为字符串或行开头。$
:匹配前面表达式作为字符串或行结尾的情况,例如[hc]at
,匹配hat
或cat
,并且hat
或cat
必须作为字符串或行的结尾。|
:匹配前面或后面的表达式,例如abc|def
匹配abc
或者def
。
个数关键字:
*
:匹配前面模式的个数为任意个(包括0个)+
:匹配前面模式的个数至少为1个?
:匹配前面模式的个数为0个或1个{n}
:匹配前面模式的个数为n个{n, m}
:匹配前面模式的个数为n个到m个
因为*
和+
可以匹配多个,而正则表达式默认为贪婪匹配,即匹配所有符合条件的字符,而这可能导致某些既符合*
所代表的模式,也符合其之后的其他模式的字符无法被之后模式所识别。这种情况下可以添加?
来转为非贪婪匹配,即匹配尽可能少的字符,例如\w+?
。
正则表达式中使用\
字符进行转义。例如-
如果在[]
中处于首尾位置(如果处于开头需要在^
后面),是作为普通字符处理;如果前后有其他字符的话是特殊字符,如果要作为普通字符需要转义处理\-
。