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

  

  

原文地址:https://www.cnblogs.com/virgosnail/p/12910584.html