限定符

a*a出现0次或多次
a+ a出现1次或多次
a?a出现0次或1次
a{6} a出现6次
a{2,6} a出现2-6次
a{2,} a出现两次以上

?:前面的一个字符出现0或1次

例:used?可匹配use和used

*:前面的一个字符出现0或多次

例:ab*c可匹配ac、abc、abbc,不可匹配adc

+:前面的一个字符出现1或多次

例:ab+c可匹配abc、abbc,不可匹配ac

{}:指定匹配范围,如{6}表示前面的一个字符出现6次,{2,6}表示前面的一个字符出现2~6次,{2,}表示前面的一个字符出现2次以上

例:ab{6}c匹配abbbbbbc

ab{2,6}c匹配abbc、abbbc...abbbbbbc

ab{2,}匹配abbc、abbbc...

():指定匹配词组,如(ab)将ab视为一个整体

例:(ab)+匹配abc、ababc、abababc

或运算符(OR Operator)

(alb)匹配a或者b
(ab)l(cd)匹配ab或者cd

|:对内容进行或匹配,如a(cat|dog)匹配a cat、a dog,括号为必不可少的内容,否则会匹配a cat、dog

字符类(Character Classes)

[abc]匹配a或者b或者c
[a-c]同上
[a-fA-F0-9]匹配小写+大写英文字符以及数字
[^0-9]匹配非数字字符

[]:表示匹配的内容只能取自于括号内的内容

例:
1.全部小写英文字符:[a-z]+
2.全部大写英文字符:[A-Z]+
3.全部英文字符:[a-zA-Z]+
4.全部数字:[0-9]+
5.全部英文字符和数字:[a-zA-Z0-9]+
6.[abc]+可匹配abc、aabbcc

^:脱字符,反选匹配^后面的字符,如[^0-9]+匹配所有的非数字字符(包括换行符)

例:[^0-9]+可匹配abc123中的abc

元字符(Meta-characters)

\d 匹配数字字符
\D 匹配非数字字符
\w 匹配单词字符(英文,数字,下划线)
\W 匹配非单词字符
\s 匹配空白符(包含换行符、Tab)
\S 匹配非空白字符
匹配任意字符(换行符除外)
\bword\b \b标注字符的边界(全字匹配)
^ 匹配行首
$ 匹配行尾

为预定义的常用字符,如数字、单词、空白符、开头、结尾等,以反斜杠开头

\:转义符
\d:数字字符
\w:单词字符,包含英文、数字、下划线
\s:空白符,包含tab(制表符)和换行符
\b:字符边界
\D:非数字字符
\W:非单词字符
\S:非空白字符
.:任意字符(不包含换行符)
^:匹配行首
$:匹配行尾

贪婪/懒惰匹配 (Greedy/Lazy Match)

<.+>默认贪婪匹配“任意字符”
<.+?>懒惰匹配“任意字符”

贪婪匹配:为默认的匹配方式,匹配尽可能多的字符

例:<.+>会匹配下面的全部内容

<span><b>this is a sample text</b></span>

懒惰匹配:使用?,匹配尽可能少的字符

例:<.+?>会匹配下面的全部标签,如<span>、<b>、</b>、</span>

<span><b>this is a sample text</b></span>

例1:匹配16进制RGB颜色值(开头为#,内容为6位的16进制字符)

#[a-fA-F0-9]{6}\b

例2:匹配IPv4地址(四组用.连起来的数字,数字范围在0~255)

\b((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)\b