0

我希望有人可以帮助我。

我有以下文字:

XX Oferta de empleo como Gestor Económico teste y financiero en Importante empresa, Jerez de la Frontera XX

我只想匹配Importante empresa

以下正则表达式可以正常工作:

XX.* en ([^,]+), .*XX

但是,如果文本有en两次,例如:

XX Oferta de empleo como Gestor Económico en teste y financiero en Importante empresa, Jerez de la Frontera XX

它将匹配以下内容:

teste y financiero en Importante empresa

你们有谁知道如何让我的正则表达式在匹配时只使用最接近逗号的,所以无论前面有多少个en我都只会匹配?Importante empresaen

谢谢你。

4

1 回答 1

0

对于您的示例,它应该可以正常工作,因为.*正则表达式开头的贪婪将匹配所有ens ,然后仅回溯到en字符串中的最后一个以允许正则表达式的其余部分匹配。我只能想到一种会失败的情况,那就是/U在 PHP 中使用修饰符使贪婪的量词变得懒惰,反之亦然。

但无论如何,您可以明确提出您的要求:

XX.* en ((?:(?!\ben\b)[^,])+), .*XX

现在否定前瞻(?!\ben\b)断言在 and 之间不能再有任何en地方(使用单词边界来避免像 in或那样的误报匹配 )。en,\bencuentrodicen

于 2012-12-27T17:51:45.773 回答