Abgleichen von Regex-Instanzen außerhalb von Anführungszeichen
Während es im Allgemeinen schwierig ist, Regex-Instanzen abzugleichen, die nicht in Anführungszeichen eingeschlossen sind, gibt es tatsächlich eine mögliche Lösung.
Um dies zu erreichen, berücksichtigen wir die folgende Eigenschaft: Ein Wort steht außerhalb von Anführungszeichen, wenn danach eine gerade Anzahl von Anführungszeichen steht. Diese Eigenschaft kann mithilfe einer Look-Ahead-Behauptung erfasst werden:
\+(?=([^"]*"[^"]*")*[^"]*$)
Diese Behauptung berücksichtigt jedoch keine maskierten Anführungszeichen. Um damit umzugehen, ändern wir das Muster so, dass sowohl Zeichen als auch Backslashes berücksichtigt werden, während Backslash-Escape-Zeichen ignoriert werden:
\+(?=([^"\]*(\.|"([^"\]*\.)*[^"\]*"))*[^"]*$)
Dieses komplexe Muster ermöglicht es uns, alle Instanzen des Zeichens „ “ zu identifizieren, die nicht in Anführungszeichen stehen. Dadurch werden sowohl doppelte Anführungszeichen als auch Escape-Sequenzen effektiv ausgeschlossen. Obwohl das Muster etwas kryptisch erscheinen mag, ermöglicht es uns, einen präzisen Abgleich außerhalb von Anführungszeichen durchzuführen.
Das obige ist der detaillierte Inhalt vonWie werden Regex-Instanzen außerhalb von Anführungszeichen abgeglichen, einschließlich maskierter Anführungszeichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!