2017-12-04 4 views
2

Ich analysiere E-Mail-Inhalt für Handlebars.Net. Use-Case ist in etwa so:Regex - Text von doppelten geschweiften Klammern umgeben (`{{text}}`) aber nicht triple Klammern ('{{{text}}}')

string template = "{{I should be found}} but {{{I shouldn't}}}"; 

Ich glaube, ich brauche eine Kombination von Lookaheads und Lookbehinds zu verwenden, diese Tags zu finden, aber ich kann das nicht an der Arbeit. Ich habe einen Regex erstellt, der nahe an dem ist, was ich brauche, aber nicht exakt so wie ich es brauche - [^{]({{.*}})(!?})

Irgendwelche Ideen?

+0

Was ist Ihr Regex-Geschmack? – anubhava

+0

@anubhava dieses Beispiel ist pcre (php) - Ich verwende https://regex101.com/ – thisextendsthat

Antwort

3

Sie diese Regex mit einer negativen Lookarounds Behauptungen verwenden:

(?<!{){{[^{}]+}}(?!}) 

RegEx Demo

  • (?!}) ist eine negative vorwärtsgerichtete Behauptung, die das Spiel, wenn nächste Zeichen fehlschlägt ist }
  • (?<!{) a negative Lookbehind-Assertion, die die Übereinstimmung fehlschlägt, wenn das vorherige Zeichen {
  • ist
+2

Perfekt, danke! – thisextendsthat

Verwandte Themen