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

4

我正在尝试寻找一个正则表达式,它能够匹配最后一个特定语言标记,并且在之后没有其他语言标记。

  • 特定语言标记:_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

此外,该模式不应匹配以下任何一项:
title_es
components_es.video.title
components_en.video.title_es
components_es.video.the_end

1
你使用的编程语言是什么? - Jorge Campos
Elasticsearch(Java) - clud
1个回答

2
这应该可以做到:
_en(\.|$)(?!.*_[a-z]{2}(\.|$))

这里有一个演示它如何在你的测试用例上运行的示例
如果你想匹配整个字符串,前缀表达式应为^.*,后缀应为.*$
^.*_en(\.|$)(?!.*_[a-z]{2}(\.|$)).*$

结果在此示例中展示。


有没有办法与整个字符串匹配? - clud
@clud 你被打败了 :) 我更新了我的答案。 - Robby Cornelissen
点(\. )有什么作用?这与预期的…end不匹配。 - Bergi
@Bergi _end 不需要匹配。但是 _end 前面的 _en 需要匹配。 - Robby Cornelissen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接