ich einen String der folgenden FormErhalten Sie alle Wörter, die eine bestimmte Präfix Gruppe haben
$string = "This is {test} for [a]{test2} for {test3}.";
Ich will, muss alle geschweiften Klammern bekommen, die nicht von eckigen Klammern vorangestellt werden. Daher möchte ich in der obigen Zeichenfolge {test}
und {test3}
, aber nicht [a]{test2}
erhalten.
Ich fand in der Antwort https://stackoverflow.com/a/977294/2311074, dass dies mit negativem Lookahead möglich sein könnte. Also habe ich versucht
$regex = '/(?:(?!\[[^\}]+\])\{[^\}]+\})/';
echo preg_match_all($regex, $string, $matches) . '<br>';
print_r($matches);
aber das gibt mir immer noch alle drei geschweiften Klammern.
Array ([0] => Array ([0] => {Test} [1] => {Test2} [2] => {test3}) )
Warum funktioniert das nicht?
@ WiktorStribiżew danke für Ihre ausführliche Antwort. Ich hole das Thema negative Lookahead auf. Ich werde antworten/upvote Ihre Antwort, sobald ich es verstanden habe. – Adam
Bitte fragen Sie, was unklar ist - ich werde für einige Stunden online sein. –