Cómo buscar ocurrencias de más de un espacio entre palabras en una línea
1. this is a line containing 2 spaces
2. this is a line containing 3 spaces
3. this is a line containing multiple spaces first second three four
Todos los anteriores son coincidencias válidas para esta expresión regular. ¿Qué expresión regular debo usar?
Respuestas:
ESPACIO (2 o más)
También puede comprobar que antes y después de esos espacios siguen las palabras. (no otros espacios en blanco como pestañas o nuevas líneas)
lo mismo, pero también puede elegir (capturar) solo los espacios para tareas como reemplazo
o ver que antes y después de los espacios hay algo, no solo caracteres de palabra (excepto espacios en blanco)
fuente
\w
significa "caracteres de palabra", es decir, alfanuméricos y guiones bajos, pero no otros caracteres que no sean espacios. Para comprobar si no hay espacios en blanco, utilice\S
(S mayúscula). Además, el primero solo coincidirá con líneas que contengan dos o más espacios y nada más.\S
, simplemente prefiero no confiar en el caso de los personajes para tal funcionalidad, es más fácil de leer.\w[ ]{2,}\w
no coincidiráword.<2 spaces>more words
o una cadena que consta completamente de espacios.[^\s]([ ]{2,})[^\s]\w
fallará en las líneas que comienzan con espacios o cadenas comobla<2 spaces>.
...Solución simple:
Esto coincide con todas las apariciones de uno o más caracteres de espacio en blanco. Si necesita hacer coincidir toda la línea, pero solo si contiene dos o más espacios en blanco consecutivos:
Si los espacios en blanco no necesitan ser consecutivos:
fuente
.*
suele ser codicioso, lo que significa que llegará al final de la cadena probada, y todo lo que sigue, si hay caracteres obligatorios, no coincidirá. Por lo general, en este caso, es una buena práctica agregar?
, como este.*?
. Me pasó usando PCRE de PHP/^.*b.*$/
de hecho"foobar"
, coincide , aunque esperaría que el primer codicioso ya.*
coincida con toda la cadena.Esta expresión regular selecciona todos los espacios, puede usar esto y reemplazarlo con un solo espacio
ejemplo en python
fuente
Buscar
[ ]{2,}
. Esto encontrará dos o más espacios adyacentes en cualquier lugar dentro de la línea. También coincidirá con los espacios iniciales y finales, así como con las líneas que constan completamente de espacios. Si no quieres eso, mira la respuesta de Alexander.En realidad, puede omitir los corchetes, son solo para mayor claridad (de lo contrario, el carácter de espacio que se repite no es tan visible :)).
El problema con
\s{2,}
es que también coincidirá con las líneas nuevas en los archivos de Windows (donde las líneas nuevas se indican conCRLF
o con las\r\n
que coinciden\s{2}
.Si también desea buscar varias pestañas y espacios, utilice
[ \t]{2,}
.fuente
more than one space between words in a line
. ¿Cómo es[ ]{2,}
entre palabras? ¿Has leído siquiera la pregunta?Aqui esta mi solucion
Esto eliminará todos los dígitos, comas y nuevas líneas, pero seleccionará el espacio intermedio, como el conjunto de datos de
fuente