Comment rechercher des occurrences de plus d’un espace entre des mots dans une ligne

Comment rechercher des occurrences de plus d’un espace entre des mots dans une ligne

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 

Toutes les réponses ci-dessus sont des correspondances valides pour cette regex. Quelle regex devrais-je utiliser?

 [ ]{2,} 

ESPACE (2 ou plus)

Vous pouvez également vérifier cela avant et après ces espaces. (pas d’autres espaces tels que des tabulations ou de nouvelles lignes)

 \w[ ]{2,}\w 

la même chose, mais vous pouvez également sélectionner (capturer) uniquement les espaces pour des tâches telles que le remplacement

 \w([ ]{2,})\w 

ou voir que avant et après les espaces il y a quelque chose, pas seulement des caractères de mot (sauf les espaces)

 [^\s]([ ]{2,})[^\s] 

Solution simple:

 /\s{2,}/ 

Cela correspond à toutes les occurrences d’un ou plusieurs caractères d’espacement. Si vous devez faire correspondre la ligne entière, mais seulement si elle contient deux caractères d’espacement consécutifs ou plus:

 /^.*\s{2,}.*$/ 

Si les espaces n’ont pas besoin d’être consécutifs:

 /^(.*\s.*){2,}$/ 

Recherchez [ ]{2,} . Cela trouvera deux ou plusieurs espaces adjacents n’importe où dans la ligne. Il correspondra également aux espaces de début et de fin ainsi qu’aux lignes entièrement constituées d’espaces. Si vous ne le voulez pas, consultez la réponse d’Alexander.

En fait, vous pouvez laisser de côté les parenthèses, elles sont juste pour plus de clarté (sinon le caractère d’espace qui se répète n’est pas bien visible :)).

Le problème avec \s{2,} est qu’il correspondra également aux nouvelles lignes sur les fichiers Windows (où les nouvelles lignes sont désignées par CRLF ou \r\n qui correspond à \s{2} .

Si vous souhaitez également rechercher plusieurs tabs et espaces, utilisez [ \t]{2,} .

Voici ma solution

 [^0-9A-Z,\n] 

Cela supprimera tous les chiffres, les virgules et les nouvelles lignes mais sélectionnera l’espace intermédiaire tel que le jeu de données de

  • 20171106,16632 ESCG0000018SB
  • 20171107,280 ESCG0000018SB
  • 20171106,70476 ESCG0000018SB