对正则表达式的印象总结为一句话就是:看似一堆乱码,功能非常强大。
1. .(点号) 匹配任何单个的字符、字母、数字甚至是 . 字符本身。
2. [ ] 匹配方括号中多个字符中的某一个,如[ns]匹配字符n或s,[A-Z]匹配大写字符A到Z中的一个,[0-9]匹配数字0到9中的一个,如此类似还有[a-z]、[A-F]等。
3. ^ 取非匹配,只有在[ ]内的第一个位置时才表示“取非”,如[^0-9]。如果^是整个正则表达式的第一个字符则表示匹配开头。
4. (空格) 匹配空格
空白元字符
|
回退(并删除)一个字符(BackSpace 键) |
f |
换页符 |
|
换行符 |
|
回车 |
|
制表符(Tab) |
v |
垂直制表符 |
5. d 等同于[0-9]
D 等同于[^0-9]
6. w 等同于[a-zA-Z0-9]
W 等同于[^a-zA-Z0-9]
7. s 任何一个空白字符,等同于[f v]
S 任何一个非空白字符,等同于[^f v]
8. x 匹配十六进制数
匹配八进制数
9. + 匹配次数大于等于1
10. * 匹配次数大于等于0
11. ? 匹配一次或0次
12. 精确设定匹配次数:
{m} 匹配m次
{m,n} 匹配m到n次
{m,} 至少匹配m次
13. 防止过度匹配
贪婪性元字符 |
懒惰型元字符 |
* |
*? |
+ |
+? |
{m,} |
{m,}? |
14. 用来匹配一个单词的开头或结尾。注意,只匹配位置,不匹配字符,例如,cat只匹配单词cat,匹配到的长度是3而不是5
B 匹配非单词边界。“erB”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。
15. ^ 定义字符串的开头,只有在[]内的第一个位置是表示“求非”
16. (?m) 分行匹配模式。必须出现在整个模式的最前面。
17. () 被括起来的内容为一个子表达式。
18. 回溯引用:num匹配模式中的第num个子表达式(num >= 1)。