Heim  >  Artikel  >  Web-Frontend  >  Wie werden Regex-Instanzen außerhalb von Anführungszeichen abgeglichen, einschließlich maskierter Anführungszeichen?

Wie werden Regex-Instanzen außerhalb von Anführungszeichen abgeglichen, einschließlich maskierter Anführungszeichen?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-24 19:12:29644Durchsuche

How to Match Regex Instances Outside of Quotes, Including Escaped Quotes?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn