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

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

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

最佳答案 这应该这样做:

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

这是a fiddle,展示了它在您的测试用例中的表现.

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

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

结果显示于this fiddle.

点赞