J'ai une séquence de chiffres comme ci-dessous. Je veux combiner les chiffres au groupe de 4. Quelqu'un peut-il donner une vim regex pour faire cela?Regex pour combiner les chiffres
entrée: 1234 56 7890 1234
la sortie doit être: 1234 5678 9012 34
J'ai une séquence de chiffres comme ci-dessous. Je veux combiner les chiffres au groupe de 4. Quelqu'un peut-il donner une vim regex pour faire cela?Regex pour combiner les chiffres
entrée: 1234 56 7890 1234
la sortie doit être: 1234 5678 9012 34
deux passes:
s/ //g
s/\(.\{4\}\)/\1 /g
je faire en deux étapes: (1) Déposer les espaces à droite des groupes de chiffres
:s/\(\d\+\) /\1/g
(2) regroupement:
:s/\(\d\{4}\)/\1 /g
En cas de nombreuses lignes enregistrer une macro
ou faire ces étapes pour une zone marquée.
Vous peut le faire en une seule passe, mais il a l'air terrible:
:s/\(\d\) *\(\d\) *\(\d\) *\(\d\) */\1\2\3\4 /g
Bien que cela fonctionne, il est assez stupide. Il est plus rapide de faire une de ces belles solutions à deux passes que de passer 2 minutes à travailler sur un Monsteregex ™ qui le fait en un seul passage. De plus, les solutions à deux passages sont plus faciles à comprendre.
:s/\(\d\)\s*\(\d\)\s*\(\d\)\s*\(\d\)\s*/\1\2\3\4 /g
fonctionne, mais je préfère Autocracy's solution.
Je me demandais juste, s'il existe une regex qui peut faire en un seul passage – chappar
Je ne pense pas qu'il y ait un moyen de le faire en un seul passage avec une regex. Je ne peux pas penser à comment enlever les espaces dans la même passe que le regroupement en 4s. –
@Autocracy - Vous pouvez le faire en un seul passage, mais c'est horrible. Je + 1 parce que c'est la meilleure solution à mon avis, mais pour une solution en un seul passage, voir ma réponse: http://stackoverflow.com/questions/910133/regex-for-combining-digits/910222#910222 –