·正则语法
1. \
将下一个字符标记为特殊字符、文本、反向引用或八进制转义符
2. ^
匹配字符串开始的位置,即以什么开始
3. $
匹配字符串结尾的位置,即以什么结尾
4. *
零次或多次匹配前面的字符或者子表达式,例如,zo*
匹配z
和zoo
,*
等于{0,}
5. +
一次或多次匹配前面的字符或者子表达式,例如,zo+
与zo
和zoo
匹配,但是与z
不匹配,+
等效于{1,}
6. ?
零次或一次匹配前面的字符或者子表达式,例如,do(es)?
匹配do
和does
中的do
.?
等效于{0,1}
7. {n}
n 是非负整数,正好匹配 n 次,例如,o{2}
与Bob
中的o
不匹配,但与food
中的两个o
匹配
8. {n,}
n 是非负整数,至少匹配 n 次,例如,o{2,}
不匹配bob
中的o
,而匹配foooooot
中所有的0
,o{1,}
等效于o+
,o{0,}
等效于o*
9. {n,m}
m和n都是非负整数,其中 n<m,至少匹配 n 次,最多匹配 m
次,例如,foooooot
中的头三个 o ,o{0,1}
等效于o?
10. ?
次字符紧跟在任何其他限定符(*、+、?、{n}、{n,}、{n,m})
之后,匹配模式是“非贪心的”。“非贪心的”模式匹配搜索到的、尽可能短的字符串,而默认的“贪心的”模式匹配搜索到的、尽可能长的字符串。例如,在字符串oooo
中,o+?
只匹配单个 o ,而 o+
匹配所有的 o
11. .
匹配除\r\n
之外的任何单个字符,若要匹配包含 \r\n
在内的任意字符,需要使用诸如[\s\S]
之类的模式
12. (pattern)
匹配 pattern 并捕获该匹配的子表达式,可以使用$0…$9属性从结果“匹配”集合中检索捕获的匹配。若要匹配括号字符()
,需使用\(
或者\)
。
13. (?:pattern)
匹配 pattern 但不捕获该匹配的子表达式,即它是一个非捕获匹配,不存储供以后使用的匹配,这对于or
字符(|)
组合模式部件的情况很有用,例如,industr(?:y|ies)
比industry|indeustries
更简洁的表达式
14. (?=pattern)
正向肯定预查,大概意思就是看后面的匹配,比如 windows(?=98|2000)
匹配 windows98
中的 windows ,但不比配 windows
的windows,可查看csdn的一篇blog https://blog.csdn.net/shashagcsdn/article/details/80017678
15. (?!pattern)
非捕获匹配,正向否定预查,例如,windows(?!98|2000)
,匹配windows31
的windows,而不匹配windows2000
的windows
16. |
或,比如x|y
,即匹配 x 或 y,(z|f)ood
匹配zood
或food
17. [xyz]
字符集,匹配包含的任一字符,例如,[nm]
匹配 name
中的n
m
18. [^xyz]
反字符集,即反向匹配包含的字符,例如 [^nm]
匹配name
中的a
e
19. [a-z]
字符范围,例如[a-z]
匹配 a
到z
范围内的所有小写字母
20. [^a-z]
反字符范围,即匹配所有不在 a
到z
范围内的任何字符
21. \b
匹配一个字边界,即字与空格之间的位置,例如,er\b
匹配ever
中的er
,但不匹配everb
中的er
22. \B
非字边界匹配,例如,er\b
匹配everb
中的er
,但不匹配ever
中的er
23. \cx
匹配由x
指明的控制字符,例如,\cM
匹配一个Control-M
或回车键 x
的范围必须为a-z
A-Z
之一,否则将c
认为一个原意的字符c
24. \d
匹配数字,等效于[0-9]
25. \D
非数字匹配,等效于[^0-9]
26. \f
换页符匹配,等效于\x0c
\cL
27. \n
换行符匹配,等效于\x0a
\cJ
28. \r
回车符匹配,等效于\x0d
\cM
29. \s
匹配任何不可见字符,包括空格符、制表符、换页符等等,等效于[\f\n\r\t\v]
30. \S
匹配任何可见字符,等效于[^\f\n\r\t\v]
31. \t
制表符匹配,等效于\x09
\cI
32. \v
垂直制表符匹配,等效禹\x0b
\cK
33. \w
匹配任何包括下划线的单词字符,类似但不等价与[A-Za-z0-9]
,“单词”使用的是Unicode字符集
34. \W
匹配任何非单词字符,等价于[^A-Za-z0-9]
35. \xn
正则表达式