49 votes

Supprimer les parenthèses d'une chaîne de caractères

J'essaie de supprimer une parenthèse d'une chaîne dans R et je rencontre l'erreur suivante :

 string <- "log(M)"
gsub("log", "", string) # Works just fine
gsub("log(", "", string) #breaks
# Error in gsub("log(", "", test) : 
#   invalid regular expression 'log(', reason 'Missing ')''

74voto

Ben Bolker Points 50041

Échappez à la parenthèse avec une double barre oblique inverse :

 gsub("log\\(", "", string)

(Obligatoire : http://xkcd.com/234/ )

1voto

glenn_in_boston Points 223

Si vous n'êtes pas un spécialiste des regex (beaucoup d'entre nous ne le sont pas !), je trouve qu'il est plus simple de séparer la suppression du texte inutile et des parenthèses, à condition que votre requête le supporte.

La question semble indiquer que vous souhaitez uniquement supprimer les parenthèses, vous pouvez donc utiliser :

 gsub(paste(c("[(]", "[)]"), collapse = "|"), "", string)

Cela se traduit par la chaîne sans parenthèses : "logM"

Si vous souhaitez également supprimer le "M"

 gsub(paste(c("M", "[(]", "[)]"), collapse = "|"), "", string)

Cela donne le résultat "log"

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