“正则表达式”笔记
元字符
-
.
匹配任意单个字符(在绝大多数正则表达式引擎中不能匹配换行符)。 -
\
1.代表转义字符。
例:\.
此处的点不再匹配任意单个字符,而是代表字符“.”本身。
同理\[\]
此处提“[”、“]”也只是普通字符,而不再是正则表达式的元字符。
如果要在正则表达式中匹配普通字符“\”,则要使用\\\\
。
任何一个元字符都可以通过给它加上一个反斜杠字符(\)作为前缀的办法来转义。
配对的元字符(比如[或])不用作元字符时必须被转义,否则正则表达式分析器很可能会抛出一个错误。
在一个完整的正则表达式里,字符“\”的后面永远跟着另一个(元)字符。
(引用自人民邮电出版社《正则表达式必知必会(修订版)》,【美】Ben Forta著,杨涛等译)
2.也可以用“\”来匹配一些非打印字符,比如:
(1)[\b]
匹配Backspace键(回退并删除一个字符)
(2)\f
换页符
(3)\n
换行符
(4)\r
回车符
(5)\t
制表符(Tab键)
(6)\v
垂直制表符
3.匹配任意一个数字:\d
等价于[0-9]
4.匹配任意一个非数字:\D
等价于[^0-9]
5.匹配任意一个字母、数字或下划线:\w
等价于[a-zA-Z0-9_]
6.匹配任意一个非字母、数字或下划线:\W
等价于[^a-zA-Z0-9_]
7.匹配任意一个非打印字符:\s
等价于[\f\n\r\t\v]
说明:不包括\b
8.匹配任意一个可打印字符:\S
等价于[^\f\n\r\t\v]
说明:不包括\b
9.匹配16进制:\x0A
对应ASCII字符10,等价于\n
10.匹配8进制:\011
对应ASCII字符9,等价于\t
-
[]
1.“[”“]”之间是一个字符集合,代表可以匹配字符集合中的某一个字符。
例:[0-9]a
可以匹配“1a”、“2a”、“3a”……
也可以写成[a-z0-9]
、[A-Za-z0-9]
、[abcdefghijklmnopqrstuvwxyz0123456789]
2.当使用-
连字符的时候,-
后面的字符的ASCII值不能大于前面字符的ACSII值。 -
-
连字符,只能在元字符“[”和“]”之间使用属于元字符,在“[”和“]”之外使用不属于元字符,只是普通字符普通字符“-”,具体使用方法见上面[]
中的介绍。 -
^
1.取非匹配。
例:[^0-9]a
可以匹配“aa”、“ba”、“Ca”,但不能匹配“1a”、“2a”、“0a”,以此类推。
2.^
的效果作用于给定字符集合里的所有字符或字符区间,而不是仅限于紧跟在^
字符后面的那一个字符或字符区间。
例:[^0-9a-z]a
代表匹配的结果中不能包括“0a”、“1a”、“2a”、“aa”、“ba”等,但可以包括“Aa”、“Ba”、“Ca”等。