正则表达式 注意:正则表达式匹配是匹配字符串,而不是行匹配模糊过滤,处理的也是字符串
基本字符匹配 1 2 3 4 . : 单个任意 [] : 括号内任意单个字符 [^ ] : 除括号内任意单个 | : 逻辑或; eg: cat|dog
字符类 1 2 3 4 5 6 7 \d : [0-9] \D : [^0-9] \w : [a-zA-Z0-9_] \W : [^a-zA-Z0-9_] \s : [\t\n \r\v\f] 匹配任意空白字符 \S : [^\t\n \r\v\f]
空白字符
1 2 3 4 5 6 # CR \r : 回车 # LF \n : 换行 # CRLF \r\n # \t : tab制表符 # \f : 换页符 # \v : 垂直制表符
定位符 1 2 3 4 ^ : 行开头,^cat,cat开头的行 $ : 行结尾, cat$, cat结尾的行 \b : 单词边界,\bcat, cat单词开头;cat\b,cat单词结尾;\bcat\b,cat这个单词 \B : 非单词边界,\Bcat\B,在单词内,例acatm
量词 1 2 3 4 5 6 * : 匹配前面0-n次,a*也就是a{0,n} + : 匹配前面1次或多次,a+也就是a{1,n} ? : 匹配前面0次或1次,a?也就是a{0,1} {n} : 匹配n次前面的元素 {n,} : 匹配n次前面或者更多的元素 {n,m} : 匹配n次到m次前面的元素
贪婪匹配与非贪婪匹配 1 2 ab{3,} : 默认贪婪匹配,有abbbbb,就不会只匹配前面的abbb ab{3,}? : 非贪婪匹配, 有abbbbb, 只匹配说的至少3个就行abbb
分组与引用 1 2 (abc) : 把abc变成一个匹配整体,后面加量词也是整体,可以通过按顺序\n或$n来引用()匹配成功的内容 (?:abc) : 加了?:就不捕获了,就只是分组看做一个整体, 给量词使用或者
旗帜 1 2 3 4 i : /xxx/xxx/i 忽略大小写匹配 m : /xxx/xxx/m 默认^$只匹配整个字符串(包括\n)的开头和结尾,加了m就可以匹配每行的 s : /xxx/xxx/s 单行模式,也就是整体看做一个字符串,. 就会匹配包含\n换行符在内的所有字符 g : /xxx/xxx/g 匹配文本中的所有实例,而不是只是每行的第一个;eg php中不支持g,用preg_match_all
前瞻 1 2 cat(?=dog) : 正,catdog的cat; eg: ?= 也就是dog等于的情况下前面的cat cat(?!dog) : 负, catcow的cat,后面不是dog的cat; eg: ?! 也就是dog不等于的情况前面的cat
后顾 1 2 (?<=cat)dog : 正,加了个<指后面,换过来了,cat匹配,就后面dog (?<!cat)dog : 负, cat不匹配,就后面的dog