我试图从法律文本中提取一些字符串,其中模式重复多次。
我不确定我是否理解延迟量词(?)的工作原理。根据我的阅读,它应该使用尽可能少的字符捕获匹配。但是,在我的下面的示例中似乎没有这样做:
很抱歉西班牙文,但我想这很简单。
... 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/
上测试正则表达式对此提供任何帮助。
感谢。
答案 0 :(得分:2)
在匹配每个字符之前,使用否定前瞻强制正则表达式引擎检查字符串los señores jueces
是否存在。
los señores jueces((?:(?!los señores jueces).)*?)votaron la tercera cuestion planteada por la afirmativa