2 votes

Comment remplacer un seul caractère dans une expression régulière en utilisant avec str_replace

J'essaie de normaliser certaines chaînes de données bizarres en utilisant des expressions régulières et str_replace_all . Dans certains cas, je souhaite utiliser des jeux de caractères (par exemple [abc] ) ou des "caractères de remplacement" (par exemple \d ) pour localiser un caractère à remplacer, mais je ne veux pas remplacer ces jeux de caractères ou ces caractères génériques.

En dessous, data est le type de données que j'ai et clean c'est ce que j'essaie d'obtenir :

data <- c("1ac 2b", "1 a", "1a b", "1a2b", "0")
clean <- c("1ac 2b", "1a", "1ab", "1a 2b", "0")

J'ai essayé d'élaborer des commandes telles que celles qui suivent :

attempt1 <- str_replace_all(data, "[abc]\\d", "[abc] \\d")
attempt2 <- str_replace_all(data, " [abc]", "[abc])

Dans ces deux tentatives, je finis par perdre les données que je veux.

Il semble que le deuxième argument de str_replace_all accepte les expressions régulières mais le troisième argument est évalué littéralement, ce qui fait que je me retrouve à remplacer des caractères que je ne veux pas remplacer.

Existe-t-il un moyen de transférer la valeur du caractère générique et des jeux de caractères de la partie expression régulière de la commande au composant remplacement ? Sinon, y a-t-il une méthode entièrement différente pour résoudre ce problème que quelqu'un pourrait recommander ?

Par ailleurs, je suis novice en matière d'expressions régulières, et si quelqu'un me donne un meilleur terme que "wildcards", je modifierai mon message en conséquence.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X