【发布时间】:2015-02-11 14:59:51
【问题描述】:
我正在尝试从重复多次的法律文本中提取一些字符串。
我不确定我是否理解惰性量词 (?) 的工作原理。根据我的阅读,它应该使用尽可能少的字符来捕获匹配。但是在我下面的示例中似乎没有这样做:
抱歉,这里是西班牙语,但我想这很简单。
...por la afirmativa.los señores jueces Doctores genoud, hitters, de lazzari, roncoroni y soria, por los mismos fundamentos de la señora jueza doctora kogan, votaron la primea cuestion planteada tambien por la negativa.a la tercera cuestion planteada, la señora jueza doctora kogan dijo:..(text)...voto por la afirmativa.los señores jueces Doctores genoud e hitters, por los mismos fundamentos de la señora jueza doctora kogan, votaron la tercera cuestion planteada por la afirmativa.a la tercera cuestion planteada, el señor juez doctor de 拉扎里·迪乔:...
我正在尝试捕获字符串 "los señores jueces" (第 4 行)和 "votaron la tercera cuestion planteada por la afirmativa" 之间的文本。此模式有两个匹配项,因为字符串“los señores jueces”出现了两次,一次在开头,然后在第 4 行。
所以我尝试使用惰性量词 (.*?) 来获得 2 个匹配项中最短的一个:
(los señores jueces(.*?)votaron la tercera cuestion planteada por la afirmativa)
但它似乎不起作用,它匹配最长的字符串,从第 1 行开始,而不是从第二个(最短)出现。我正在https://regex101.com/ 上测试正则表达式
感谢任何帮助。
谢谢。
【问题讨论】:
-
惰性量词不是这样工作的。事实上,惰性量词在这里什么也得不到。
-
惰性量词影响如何从当前位置的一组可能匹配中选择匹配。它不会影响匹配位置的选择——它始终是最左边的一个。因此,RE 引擎扫描您的字符串,找到“开始”字符串,进一步扫描,直到遇到“结束”字符串,停在那里,不再尝试找到“更好”的匹配。
-
感谢 georg 的澄清,我误解了惰性量词的使用。
标签: regex