Ich habe eine Regex, die ich verwende, um verschiedene Paare von geschweiften Klammern zu vergleichen, so dass ich sie während der Entwicklung kommentieren kann.RegEx, das mit geschweiften Klammern und führenden oder nachlaufenden Substr beginnt oder endet mit Anführungszeichen
Mein RegEx ist:
/{{.+_includes\s*}}|[^>\s]*{{\s*|\s*}}[^<\s]*|{%.+%}/g
Und diese stimmt mit der Teilzeichen ich in # Zeichen eingewickelt haben:
1. #{{ #builtin_body_classes# }}#
2. #"{{ #builtin_body_classes# }}# no-js"
3. "no-js #{{ #builtin_body_classes# }}"#
4. "no-js some-other-class #{{#builtin_body_classes#}}"#
5. #{{standard_header_includes}}#
6. #{{ standard_footer_includes }}#
7. <title>#{{ #page_meta.html_title# }}#</title>
8. #{% type_of_module "unique_module_name" parameterString='String parameter value', parmeterBoolean=True %}#
Beachten Sie die Leerzeichen (zwei Räume) die vorlaufenden und nachlauf jede Zeile sind nicht abgestimmt und noch sind die Beispiel title
Tags.
Dies funktioniert genau so, wie ich für alle außer zwei Fällen wollen - die Zeilen, die in Anführungszeichen (Fälle 2, 3 und 4) eingewickelt sind.
Für diese Fälle möchte ich die Anführungszeichen und Teilstrings, die die geschweiften Klammern führen oder hinterher führen, die auch in der Übereinstimmung enthalten sind, z.B.
2. #"{{ #builtin_body_classes# }} no-js"#
3. #"no-js {{ #builtin_body_classes# }}"#
4. #"no-js some-other-class {{#builtin_body_classes#}}"#
Auch hier habe ich den Teil gewickelt Ich mag würde zwischen # Zeichen übereinstimmen.
würde sehr schätzen, dies zu erreichen helfen, und ich bin sicher, dass mein regex zu optimiert werden könnte ;-)
Die Prämisse Ihrer Regex Teile (Alternationen) sind alle Linie basiert. Sie können keine Linien überspannen, aber sie können viele einzelne '}}' oder '{{' in einer Zeile enthalten. Ist das was du vorhast? Interessierst du dich um den Abschluss? – sln
Danke für Ihren Kommentar! Ich bin nicht allzu besorgt darüber, mehrere Paare von geschweiften Klammern zu ersetzen. Aber ersetzen Sie im Idealfall nur das erste '{{' und das letzte '}}' (offensichtlich in Übereinstimmung mit meinen Wunschkriterien in den Beispielfällen). Dies würde helfen, Fehler während der Entwicklung hervorzuheben! –