En Perl \Scoincide 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, bo c"; [^abc]significa "coincidir con cualquier carácter excepto a, bo 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.gmodificador./[^\s\\]/gPuede 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
\scoincide 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 gEn mi sistema: CentOS 5
Puedo usar
\sfuera 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.