量词与重复匹配
量词在正则表达式中非常实用。 例如有一段文本:今天是公元2030年
,匹配出2030
;不使用量词的正则表达式\d\d\d\d
, 使用量词\d{4}
,可以看出量词使表达式更简洁
基础
量词 | 名称 | 匹配次数 | 示例(模式a ) |
匹配结果示例 |
---|---|---|---|---|
* |
星号 | 0次或多次(贪婪) | a* |
"", "a", "aaa" |
+ |
加号 | 1次或多次(贪婪) | a+ |
"a", "aaa" |
? |
问号 | 0次或1次 | a? |
"", "a" |
{n} |
精确量词 | 恰好n次 | a{3} |
"aaa" |
{n,} |
下限量词 | 至少n次 | a{2,} |
"aa", "aaaa" |
{n,m} |
范围量词 | n到m次 | a{2,4} |
"aa", "aaa", "aaaa" |
贪婪 vs 懒惰(非贪婪)模式
类型 | 表示法 | 匹配策略 | 示例(a.*b vs a.*?b ) |
---|---|---|---|
贪婪 | 默认量词 | 尽可能多匹配 | "aabab" → 匹配整个"aabab" |
懒惰 | 量词后加? |
尽可能少匹配 | "aabab" → 匹配"aab"和"ab" |