Verwenden Sie anstelle der Liste der zulässigen Zeichen die Liste der verbotenen Zeichen mit negierten Zeichenklassen. Beispiel:
~
@if \((?P<condition> [^)]*) \)
\s*
(?P<content> [^@]*+ (?: @(?!endif\b) [^@]*)*+)
@endif
~x
demo
Anstelle von .*
für den Zustand (das nicht weiß, wo zu stoppen), [^)]*
verwenden, die alle bis zur schließenden Klammer greift.
Gleiches für den Inhalt, verwenden Sie [^@]*
und überprüfen Sie nach jedem , wenn "endif"
folgt. (auf diese Weise "@"
wird in den Inhalt erlaubt.)
Sonstiges: \n*\s*
Schreiben macht keinen Sinn, weil die beiden sind optional und \s
enthält bereits \n
, deshalb habe ich es entfernt.
Wie ich sehe, ist es als "0" == '0''angepasst. Was ist los mit dir? –
das ist ein Beispiel :-) Es geht um die 2 Bedingungen. Es braucht sie nur als eins. Aber ich möchte als zwei akzeptieren – Neonlight