第五章 重复匹配

5.1 有多少个匹配
 
5.1.1 匹配一个或多个字符
想要匹配同一个字符(或字符集合)的多次重复,只要简单的给这个字符(或字符集合)加上一个+字符作为后缀就行了。
 
+匹配一个或多个字符(至少一个;不匹配零个字符的情况)
 
+是一个元字符,如果需要匹配+本身,就必须使用它的转义系列+
 
例子:匹配电子邮件地址
 
[w.]+@[w.]+.w+
[w.]+@[w.]+.[w.]+
备注:最后一个[w.]+考虑到有些邮件地址会有多层域名(或主机名)
 
一般来说,当在字符集合里使用的时候,像.和+这样的元字符将会被解释为普通字符,不需要被转义,但转义了也没坏处。
 
 
5.1.2 匹配零个或多个字符
如果想要匹配一个可有可无的字符(该字符出现零次或出现多次),只要在该字符(或字符集合)的后面加上*后缀就行。
 
例子:匹配电子邮件地址
w+[w.]*@.w+
 
*是一个元字符,如果需要匹配*本身,就必须使用它的转义系列*
 
5.1.3 匹配零个或一个字符
?只能匹配一个字符(或字符集合)的零次或一次出现,最多不超过一次。
 
例子:匹配一个URL地址
http[s]?://[w./]+
 
?是一个元字符,如果需要匹配?本身,就必须使用它的转义系列?
 
5.2 匹配的重复次数
正则表达式提供了一个用来设定重复次数(interval)的语法。重复次数要用{和}字符来给出,把数值写在它们之间。
 
{和}是一个元字符,如果需要匹配{和}本身,就必须使用它的转义系列{和}
 
5.2.1 为重复匹配次数设定一个精确的值
将数值写在{和}之间即可。如{3}
 
例子:匹配RGB值
#[0-9A-Fa-f]{6}
#[[:xdigit:]]{6}
 
5.2.2 为重复匹配次数设定一个区间
{}语言可以用来为重复匹配次数设定一个区间,也就是为重复匹配次数设定一个最小值和最大值。如{2,4},最少重复2次,最多重复4次。
 
例子:检查日期格式是否正确
[d]{1,2}[- /][d]{1,2}[- /][d]{2,4}
 
5.2.3 匹配“至少重复多少次”
{3,}表示至少重复3次,等价于“必须重复3次或更多次”
 
 
5.3 防止过度匹配
 
常见的贪婪型元字符和它们的懒惰型版本
 
 
贪婪型元字符
懒惰型元字符
*
*?
+
+?
{n, }
{n, }?
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

原文地址:https://www.cnblogs.com/mumulin99/p/9838538.html