Kann eine der folgenden Sequenzen in Ihrer Eingabe vorkommen?
\\>
\\\>
\\\\>
\
blank
\
tab
\
newline
...
Wenn ja, wie schlagen Sie vor, sie zu behandeln?
Wenn nicht, dann zero-width look-behind assertions wird den Trick tun, vorausgesetzt, dass Ihre Engine für reguläre Ausdrücke es unterstützt. Dies ist der Fall in jedem Motor sein, die Perl-Stil reguläre Ausdrücke (einschließlich Perl, PHP, etc.) unterstützt:
(?<!\\)[ \n\t<>]
Das wird jede un-escaped Raum, Newline, Reiter oder gewinkelte Klammern entsprechen oben. Mehr allgemein (\s
keine Leerzeichen zu bezeichnen verwenden, einschließlich \r
):
(?<!\\)\s
Alternativ kann für eine Null-Breite Blick hinter Behauptung, ohne die Notwendigkeit komplementäre Notation (aber wohl weniger effizient):
(?:[^ \n\t<>]|\\[<>])
Sie können auch eine Variation des letzteren verwenden, um die \\>
, \\\>
, \\\\>
usw. Fällen auch bis zu einem gewissen endlichen Anzahl vorhergehender Schrägstriche, wie zu behandeln:
(?:[^ \n\t<>]|(?:^|[^<>])[\\]{1,3,5,7,9}[<>])
Sie können [...] Zeichenklassen nicht so verschachteln. – smci