能够帮程序员匹配指定规则的字符串
1.限定符
- ?代表?前面的字符需要出现0次或一次 eg: used?, d可有可无,可以匹配 use,used
- * 会匹配0个或多个字符 eg: ab*c,b可以没有,也可以出现多次,可以匹配ac, abc, abbbbc,abbbbbbbbc等
- + 会匹配出现>=1次的字符 eg:ab+c, b出现的次数要>=1,可以匹配abc,abbbc,abbbbc等。如果想要做到更加精确的匹配,可以使用花括号,这就允许我们输入一个范围。比如要指定b出现的次数为6次,可以写成 ab{6}c ; 比如希望字符出现的次数为2-6之间,可以写成 ab{2,6}c ,可以匹配abbc,abbbc,abbbbc,abbbbbc,abbbbbbc; 如果希望字符出现的次数>=2,可以写成 ab{2,}c
- 以上限定匹配的是一个字符,若要匹配多个字符的重复,可以用()。eg: (ab)+, ab出现的次数>=1, 可以匹配ab, abab,abc,abbc等
2.“或”运算符
(a|b) 匹配a或b
(ab)|(cd) 匹配ab或cd
3.字符类
比如我们想匹配由abc这几个字母构成的单词,可以用 [abc]+ ,方括号里的内容代表要求匹配的字符只能取自它们
在方括号里指定字符的范围:比如 [a-z]+ 代表所有小写英文字符;[a-zA-Z]+代表所有英文字母;[a-zA-Z0-9]+ 代表所有英文字符和数字
如果在 [ ] 前面写一个 ^(脱字符),代表要求匹配除了 ^ 后面列出的 [ ] 以外的字符,比如 [^0-9]代表所有的非数字字符(包括换行符)
4.元字符
正则表达式中的大多元字符都是以 \ 开头。\d+ 代表数字字符,等同于[0-9]+ ;\D+ 代表非数字字符 ;\w+ 代表单词字符,(包括所有的英文字符,数字和下划线) ;\W+ 代表非单纯字符 ;\s+ 代表空白符(包括tab制表符和换行符);\S+ 代表非空白字符
" . " 代表任意字符,但不包括换行符
^匹配行首
$匹配行尾
\b 标注字符边界(全字匹配)
5.贪婪与懒惰匹配
- <.+>默认贪婪匹配“任意字符”
- <.+?>懒惰匹配“任意字符”
之前说到的 * + { } 在匹配字符串的时候,默认会匹配尽可能多的字符
<.+>这个表达式会把整个字符串全部匹配,如果想要匹配< >里的内容,可以写成<.+?>,这样会将正则表达式中默认的贪婪匹配(greedy match)切换为懒惰匹配(lazy match)