1、基本符号含义速记
. 点号,就像中文中的省略号中意思一样,表示什么都可以匹配。
* 星号,满天星,数不清,意思就是任意次数,当然0也在内。
+ 加号,一中间加一竖线,也就是比一多以些。就是匹配一次或者任意多次。
? 问号,
^ 帽子符号,带头头上的帽子,一身行头从头起。表示一行开头。要注意的是如果放在中括号里就像程序语言里的依思一样表示 非
$ 弯弯曲曲的尾巴,表示到了行尾。
( ) 小括号,像个橄榄球,可以用来传递给下一个队员。意思就是括起来的匹配到的内容可以做参数往后传递。例子: (abc)\1 abc这个球传给了\1,会匹配到abcabc,(abc)(dd)\1\1\2 匹配到 abcddabcabcdd
[ ] 中括号,程序里经常用来表示数组,正则里也是用来表示一组东西匹配。比如 [a-z] 表示a到z之间的任意一个字符
{} 大括号,两个锅盖,锅盖盖住,汤就不会溢出。表示限定汤的范围。汤的写法:{1,3}表示匹配1次到三次。所以{0,1}和?是等价的。a{0,1} 和a? 都是能匹配到a 和aa
2、转义
以下内容可望文生义,比如\b--border 边界,\d digital 数字
\b 匹配一个单词边界,也就是指单词和空格间的位置。例如,“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。
\B 匹配非单词边界。“er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。
\cx 匹配由x指明的控制字符。例如,\cM匹配一个Control-M或回车符。x的值必须为A-Z或a-z之一。否则,将c视为一个原义的“c”字符。
\d 匹配一个数字字符。等价于[0-9]。
\D 匹配一个非数字字符。等价于[^0-9]。
\f 匹配一个换页符。等价于\x0c和\cL。
\n 匹配一个换行符。等价于\x0a和\cJ。
\r 匹配一个回车符。等价于\x0d和\cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于[^ \f\n\r\t\v]。
\t 匹配一个制表符。等价于\x09和\cI。
\v 匹配一个垂直制表符。等价于\x0b和\cK。
\w 匹配包括下划线的任何单词字符。等价于“[A-Za-z0-9_]”。
\W 匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。
3、综合例子
^P[0-9]{2,4}(aa).*\1?[\d]{1}\.png$ 匹配 P30aaFUCKaa8.png
4、在日常工作中使用正则
在电脑上安装everything,在设置里开启正则搜索,当需要找电脑里所有带单词asb,结尾是两位数字的视频avi文件。可以在搜索框输入 .*asb.*\d\d\.avi 或者 .*asb.*\d{2}\.avi