正则表达式:忽略重复的单词,除了最后重复的单词?

时间:2012-12-27 17:23:24

标签: regex

我希望有人能帮助我。

我有以下文字:

XX Oferta de empleo comoGestorEconómicoptetey financiero en Importante empresa,Jerez de la Frontera XX

我想仅匹配Importante empresa

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

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

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

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

它将匹配以下内容:

teste y financiero en Importante empresa

你们中的任何人都知道如何使我的正则表达式仅在匹配时使用最接近逗号的en,因此无论Importante empresa多少,我都只会匹配en s在它之前?

谢谢。

1 个答案:

答案 0 :(得分:0)

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

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

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

现在,否定前瞻(?!\ben\b)断言enen之间的任何地方都不会再有,(使用\b字边界以避免误差匹配,例如encuentrodicen)。