正则表达式:找到最后一次出现的模式

问题描述:

我正在试图找到一个正则表达式,该正则表达式将匹配最后一次出现的特定语言标记,之后没有其他语言标记。正则表达式:找到最后一次出现的模式

  • 特定语言标签:_en
  • 语言标签:_[a-z]{2}

例如,图案应该匹配所有的以下内容:

title_en 
components_en.video.title 
components_en.video.title_en 
components_en.video.the_end 
components_es.video.title_en 

此外,模式不应该跟匹配G:

title_es 
components_es.video.title 
components_en.video.title_es 
components_es.video.the_end 
+1

什么是你的味道?(你正在使用的语言) –

+0

elasticsearch(java) – clud

这应做到:

_en(\.|$)(?!.*_[a-z]{2}(\.|$)) 

这里的a fiddle显示它如何执行你的测试用例。

如果要匹配整个字符串,请在表达式前加上^.*,后缀为.*$

^.*_en(\.|$)(?!.*_[a-z]{2}(\.|$)).*$ 

结果示于this fiddle

+0

有什么办法可以将整个字符串与此匹配? – clud

+0

@clud打败你:) :)更新了我的答案。 –

+0

什么是点('\ .')的好处?这与预期的'... end'不匹配。 – Bergi