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

时间:2017-02-22 02:36:32

标签: java regex elasticsearch

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

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

答案 0 :(得分:2)

这应该这样做:

<!doctype html>
<head>
  <base href="https://polygit.org/components/">
  <script src="webcomponentsjs/webcomponents-lite.min.js"></script>
  <link href="polymer/polymer.html" rel="import"/>  
  <link href="paper-ripple/paper-ripple.html" rel="import"/>
</head>

<body>
  <test-elem></test-elem>
  
  <dom-module id="test-elem">
    <template>
      <style>
        div { 
          width: 150px;
          position: relative; 
          padding: 15px;
          border: 1px solid black;
        }
        button { color: green; border: 1px solid green;  }
      </style>
    
      
      <div>
        <paper-ripple></paper-ripple>
        <button>Button</button>
      </div>  
    </template>
    
    <script>
      Polymer({ is: 'test-elem'})
    </script>
    
  </dom-module>

</body>

以下a fiddle显示了它在您的测试用例中的表现。

如果您想匹配整个字符串,请在表达式前加_en(\.|$)(?!.*_[a-z]{2}(\.|$)) 前缀,后缀加^.*

.*$

结果显示在this fiddle