En Perl \S
coincide con cualquier carácter que no sea un espacio en blanco.
¿Cómo puedo hacer coincidir cualquier carácter que no sea un espacio en blanco, excepto una barra invertida \
?
Puedes usar una clase de personaje :
/[^\s\\]/
coincide con cualquier cosa que no sea un carácter de espacio en blanco ni un \
. Aquí hay otro ejemplo:
[abc]
significa "coincidencia a
, b
o c
"; [^abc]
significa "coincidir con cualquier carácter excepto a
, b
o c
".
^
interpreta como negación y cuándo como comienzo de línea? En ese sentido, ¿por qué esto no coincide con una línea que comienza con un número de espacios en blanco?$0~/\s*^\s/
$0~/\s*^\s/
seguidos de cualquier carácter que no sea espacios en blanco/^\s+/
: comienzo de línea, seguido de uno o más caracteres de espacio en blanco.g
modificador./[^\s\\]/g
Puede utilizar una búsqueda anticipada:
fuente
/(?=\S)\W/
THIS IS A TEST, AND AGAIN
. : . Lo siguiente funcionó bien para mí(?=\S)[^"]*
.Esto funcionó para mí usando sed [ Editar: el comentario a continuación señala que sed no admite \ s]
mientras
no
fuente
\s
coincide con algo más que el carácter de espacio. Incluye TAB, retorno de carro de avance de línea, y otros (cómo muchos otros dependen del sabor de expresiones regulares). Es una invención de Perl, originalmente una forma abreviada de la clase de caracteres POSIX[:space:]
, y no es compatible consed
. Su primera expresión regular anterior debería sers/[^[:space:]g]//g
.echo "ghai ghai" | sed "s/[^[:space:]g]//g"
Rendimientos:g g
En mi sistema: CentOS 5
Puedo usar
\s
fuera de colecciones pero tengo que usar[:space:]
dentro de colecciones. De hecho,[:space:]
solo puedo usar colecciones internas. Entonces, para hacer coincidir un solo espacio usando esto, tengo que usar[[:space:]]
Lo que es realmente extraño.\s
[[:space:]]
[^[:space:]]
Estos dos no funcionarán:
fuente
([^[:space:]])
lugar de([^\s])
. Estoy en openSUSE Tumbleweed 2018 04 03.