与正则表达式最简单匹配 - 懒惰量词

时间:2015-02-11 14:59:52

标签: regex

我试图从法律文本中提取一些字符串,其中模式重复多次。

我不确定我是否理解延迟量词(?)的工作原理。根据我的阅读,它应该使用尽可能少的字符捕获匹配。但是,在我的下面的示例中似乎没有这样做:

很抱歉西班牙文,但我想这很简单。

  

... por laafirmativa.losseñoresjuecesdoctores genoud,hitters,de   lazzari,roncoroni y soria,por los mismos fundamentos delaseñora   jueza doctora kogan,votaron la primera cuestion planteada tambien por   la negativa.a la tercera cuestion planteada,laseñorajuezadoctora   kogan dijo:..(text)... voto por laafirmativa.losseñoresjueces   doctores genoud e hitters,por los mismos fundamentos delaseñora   jueza doctora kogan,votaron la tercera cuestion planteada por la   afirmativa.a la tercera cuestion planteada,elseñoruezdoctor de   lazzari dijo:......

我正在尝试捕捉字符串“losseñoresjueces”(第4行)和“ votaron la tercera cuestion planteada por la afirmativa ”之间的文字。此模式有两个匹配项,因为字符串“losseñoresjueces”出现两次,一次在开头,然后在第4行。

所以我尝试使用延迟量词(。*?)来获得2个匹配中最短的一个:

(los señores jueces(.*?)votaron la tercera cuestion planteada por la afirmativa)

但它似乎不起作用,它匹配最长的字符串,从第1行开始而不是第二次(最短)出现。我在https://regex101.com/

上测试正则表达式

对此提供任何帮助。

感谢。

1 个答案:

答案 0 :(得分:2)

在匹配每个字符之前,使用否定前瞻强制正则表达式引擎检查字符串los señores jueces是否存在。

los señores jueces((?:(?!los señores jueces).)*?)votaron la tercera cuestion planteada por la afirmativa

DEMO