1. 简介
正则表达式默认情况下为贪婪模式,即在满足表达式的情况下尽可能多的匹配字符;
但有时可能需要在满足要求的情况下匹配尽可能少的字符,这就要用到懒惰模式;
2. 基本用法
这是一个文本文件,匹配要求:以 concat( 开头,之后任意个字符,然后是英文逗号的文本
2.1 默认情况下的贪婪模式
grep -oP "concat(.*," test2.xml
2.2 懒惰模式
* 和 + 限定符都是贪婪的,因为它们会尽可能多的匹配文字,只要在它们的后面加上一个?就可以实现懒惰或最小匹配
grep -oP "concat(.*?," test2.xml
3. 懒惰模式的方案
3.1 标准用法
正则表达式时采用懒惰模式
3.2 排除匹配字符的后缀
比如上面需要匹配 concat( 开头,中间任意字符,然后是英文逗号的文本
此时我们在匹配中间任意字符是,排除英文逗号,也可以实现懒惰匹配的效果
grep -oP "concat([^,]*," test2.xml