【01】总
限定符
用来指定正则表达式的一个给定的字符组合必须要出现多少次才能满足匹配。有*或+或?或{n}或{n,}或{n,m}共6种。
【】魔芋:这样的都是优先匹配最长字符串的。所以称为贪婪匹配。
比如:/a+/ 会匹配“aaaaa”的aaaa。而不是a
- ?*+ 表示匹配字符串”?*+”
- [?*+]表示匹配一个问号,或者一个*号,或者一个加号
【】n可以是被括号括起来的整体。n可以是子表达式。
do(es)+ //这时n为es
正则表达式的限定符有:
n*
n匹配0次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。
0+
n+
n匹配1次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
1+
n?
n匹配0次或1次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。
0或1
n{X}
X是一个非负整数。匹配 X次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
n{X,}
X是一个非负整数。至少匹配X次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。
n{X,Y}
X 和 Y 均为非负整数,其中X <= Y。最少匹配X且最多匹配Y次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。
在使用“*”和“?”时要注意,由于这些字符可能匹配0个字符,因此它们允许什么都不匹配。
例如,正则表达式/a*/实际上与字符串“bbbb”匹配,因为这个字符串含有0个a。
**