正则表达式
表达方式
可以用字符串字面值表达;也可以字符组简写式表达;
正则表达式将方括号、花括号本身用做元字符。视为特殊的元字符,因此方括号不参与匹配。
元字符是在正则表达式中有特殊含义的字符,也是保留字符。[0-9]这种形式的正则表达式称做字符组。
\d,转义的小写d(\d),可以像[0-9]一样匹配任意阿拉伯数字,
\D,用转义的大写D(\D),它匹配任何一个非数字字符。
^,表示“不匹配这些”或“匹配除这些以外的内容”。
如 [^0-9]等效于[^\d]或\D表示“匹配非数字字符”
点号(英文句号)是一个通配符,可以匹配任意字符(但某些情况下不能匹配行起始符)。
捕获分组和后向引用
先捕获才能引用
使用()捕获,比如(\d)\d\1
(\d)匹配第一个数字并将其捕获;
\d匹配第二个数字(数字0)但没有捕获,因为没有括号;
\1对捕获的数字进行反向引用
\1引用第 1 对括号内匹配到的字符串,"/2" 引用第 2 对括号内匹配到的字符串……以此类推,如果一对括号内包含另一对括号,则外层的括号先排序号。换句话说,哪一对的左括号"(" 在前,那这一对就先排序号。
\w,它只匹配字母、数字和下划线。在英语环境中,
与\w匹配相同内容的字符组为:[_a-zA-Z0-9]
\W,大写字母W匹配非单词字符:
等效的字符组为:[^_a-zA-Z0-9]
量词
? 零个或一个(可选)
+ 一个或多个
* 零个或多个