shell 實現懶惰匹配或最小匹配


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

  

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM