¿Puede alguna de las siguientes secuencias aparecer en su entrada?
\\>
\\\>
\\\\>
\
blank
\
tab
\
newline
...
Si es así, ¿cómo propone tratarlos?
Si no, entonces zero-width look-behind assertions hará el truco, siempre que su motor de expresiones regulares lo admita. Este será el caso en cualquier motor que soporta expresiones regulares al estilo Perl (incluyendo Perl, PHP, etc.):
(?<!\\)[ \n\t<>]
Lo anterior coincidirá con cualquier espacio, salto de línea, tabuladores ONU escapado o apoyos en ángulo. Más genéricamente (usando \s
para denotar cualquier carácter de espacio, incluyendo \r
):
(?<!\\)\s
Alternativamente, usando la notación complementaria sin la necesidad de un vistazo-detrás de la afirmación de anchura cero (pero posiblemente con menos eficiencia):
(?:[^ \n\t<>]|\\[<>])
también puede utilizar una variación de este último para manejar las \\>
, \\\>
, \\\\>
etc. casos también hasta un cierto número finito de barras invertidas anteriores, tales como:
(?:[^ \n\t<>]|(?:^|[^<>])[\\]{1,3,5,7,9}[<>])
No puede anidar clases de caracteres [...] así. – smci