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