2017-02-22 3 views
3

Ich versuche einen regulären Ausdruck zu finden, der mit dem letzten Vorkommen eines bestimmten Sprachtags übereinstimmt, ohne dass danach andere Sprachtags gefunden werden.Regex: Finde letztes Vorkommen von Muster

  • spezifische Sprache tag: _en
  • Sprache tag: _[a-z]{2}

Zum Beispiel das Muster sollte Spiel mit allen folgenden:

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

Auch das Muster sollte nicht mit einem der folgenden übereinstimmen g:

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

Was ist Ihr Geschmack (Sprache, die Sie verwenden) –

+0

elasticsearch (java) – clud

Antwort

2

Dies sollte es tun:

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

a fiddle Hier zeigen, wie es auf dem Testfälle durchführt.

Wenn Sie die gesamte Zeichenfolge anpassen möchten, setzen Sie den Ausdruck mit ^.* und Suffix mit .*$ voran.

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

Ergebnisse werden in this fiddle gezeigt.

+0

Gibt es eine Möglichkeit, die gesamte Zeichenfolge mit diesem überein? – clud

+0

@clud Beat dich dazu :) Meine Antwort aktualisiert. –

+0

Wofür ist der Punkt ('\ .') gut? Dies entspricht nicht "... end" wie beabsichtigt. – Bergi

Verwandte Themen