2016-10-07 4 views
-2

Ich habe einen Text wie diesenRegex finden nur doppelt geschweiften Klammern Wort vom Text

Hello {{xyz}} how are {{abc}. I am {opq}} for your {{bpq}}. 

aus diesem Text i nur {{abc} und {opq}} außer {{xyz}} und {{bpq}} finden möchten. Was wird der reguläre Ausdruck für php sein.

Ich habe versucht, diese

preg_match_all("/\{{(.*?)\}}/", $mytext, $matches); 
+1

Ich weiß nicht, warum unten Abstimmung hier. Wenn ein Problem in meiner Frage ist, sollten Sie mich im Kommentar wissen. – Masum

Antwort

1

Sie diese Regex in PHP mit PCRE Verb verwenden kann (*SKIP)(*F) die + überspringen verwendet, um ein Spiel im Wechsel scheitern.

{{[^{}]*}}(*SKIP)(*F)|{{[^{}]*}|{[^{}]*}} 

RegEx Demo

Alternativ, können Sie auch eine Lookarounds basierte regex verwenden:

{{[^{}]*}(?!})|(?<!{){[^{}]*}} 
  • (?!}) negativ Look-Ahead, das Spiel zu scheitern, wenn neben char}
  • (?<!}) ist negativ Lookbehind, um die match, wenn vorherige char ist {
+1

Ich sehe keinen besonderen Grund, diese Antwort zu verwerfen. –

+1

Oh, ich sehe jetzt, werfen Sie einen Blick: https://regex101.com/r/4AFVb6/1 sollten Sie ersetzen '. *?' Mit '[^ {}] *' –

+0

Danke @CasimiretHippolyte, guten Fang. Bearbeitet. – anubhava

Verwandte Themen