r

Supprimer toutes les marques de ponctuation sauf les apostrophes dans R

Je voudrais utiliser gsub R Pour supprimer tous les marques de ponctuation du texte, à l'exception des apostrophes. Je suis plutôt nouveau pour regex, Mais j'étudie.

Exemple

:


x <- "I like %$@to*&, chew;: gum, but don't like|}{[] bubble@#^// gum!?"
gsub/"[[:punct:]]", "", as.character/x//


Sortie actuelle /Sans Apostrophe B. do not

/


[1] "I like to chew gum but dont like bubble gum"


Résultat désiré /Je veux l'apostrophe dans don ' t to stay

/


[1] "I like to chew gum but don't like bubble gum"
Invité:

Gaspard

Confirmation de:

x <- "I like %$@to*&, chew;: gum, but don't like|}{[] bubble@#^// gum!?"
gsub/"[^[:alnum:][:space:]']", "", x/

[1] "I like to chew gum but don't like bubble gum"


Plus haut regex Beaucoup plus simple. Il remplace tout ce qui n'est pas des signes alphanumériques, un espace ou une apostrophe /Carrelage de symboles!/, Chaîne vide.

Damien

Confirmation de:

Voici un exemple:


> gsub/"/.*?//$|'|[^[:punct:]]+?//.*?/", "\\2", x/
[1] "I like to chew gum but don't like bubble gum"

Dominique

Confirmation de:

Vous pouvez éliminer les apostrophes de la classe POSIX
punct

Utilisation du double déni:


[^'[:^punct:]]


Le code

:


x <- "I like %$@to*&, chew;: gum, but don't like|}{[] bubble@#^// gum!?"
gsub/"[^'[:^punct:]]", "", x, perl=T/

#[1] "I like to chew gum but don't like bubble gum"


http://ideone.com/ZBeIH8

Cyprien

Confirmation de:

Principalement pour une variété, c'est une solution utilisant
gsubfn//

D'un paquet magnifique avec le même nom. Dans cette application, j'aime à quel point cette décision est belle:


library/gsubfn/
gsubfn/pattern = "[[:punct:]]", engine = "R",
replacement = function/x/ ifelse/x == "'", "'", ""/,
x/
[1] "I like to chew gum but don't like bubble gum"


/L'argument est nécessaire ici
engine = "R"

, Depuis sinon le mécanisme sera utilisé tcl défaut. Ses règles pour la cartographie des expressions régulières sont légèrement différentes: si elle était utilisée, par exemple, pour gérer la ligne ci-dessus, il serait plutôt nécessaire d'installer
pattern = "[[:punct:]$|^]"

. Merci Grotestka pour des instructions sur cet article./

Pour répondre aux questions, connectez-vous ou registre