正则表达式

·正则语法

1. \ 将下一个字符标记为特殊字符、文本、反向引用或八进制转义符

2. ^ 匹配字符串开始的位置,即以什么开始

3. $ 匹配字符串结尾的位置,即以什么结尾

4. * 零次或多次匹配前面的字符或者子表达式,例如,zo*匹配zzoo,*等于{0,}

5. + 一次或多次匹配前面的字符或者子表达式,例如,zo+zozoo匹配,但是与z不匹配,+ 等效于{1,}

6. ? 零次或一次匹配前面的字符或者子表达式,例如,do(es)?匹配dodoes中的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匹配zoodfood

17. [xyz] 字符集,匹配包含的任一字符,例如,[nm] 匹配 name中的n m

18. [^xyz] 反字符集,即反向匹配包含的字符,例如 [^nm]匹配name中的a e

19. [a-z] 字符范围,例如[a-z]匹配 az范围内的所有小写字母

20. [^a-z] 反字符范围,即匹配所有不在 az范围内的任何字符

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