我希望有人能帮助我。
我有以下文字:
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在它之前?
谢谢。
答案 0 :(得分:0)
使用您的示例,它应该正常工作,因为正则表达式开头的贪婪.*
将匹配所有en
,然后只回溯到最后en
字符串,以允许正则表达式的其余部分匹配。我只能想到一种失败的情况,而在PHP中使用/U
修饰符会使贪婪量词变得懒惰,反之亦然。
但无论如何,您可以明确要求:
XX.* en ((?:(?!\ben\b)[^,])+), .*XX
现在,否定前瞻(?!\ben\b)
断言en
和en
之间的任何地方都不会再有,
(使用\b
字边界以避免误差匹配,例如encuentro
或dicen
)。