Supprimer tout le texte entre crochets
Supposons que j'ai un peu de texte comme ceci,
text<-c("[McCain]: We need tax policies that respect the wage earners and job creators. [Obama]: It's harder to save. It's harder to retire. [McCain]: The biggest problem with American healthcare system is that it costs too much. [Obama]: We will have a healthcare system, not a disease-care system. We have the chance to solve problems that we've been talking about... [Text on screen]: Senators McCain and Obama are talking about your healthcare and financial security. We need more than talk. [Obama]: ...year after year after year after year. [Announcer]: Call and make sure their talk turns into real solutions. AARP is responsible for the content of this advertising.")
et je voudrais enlever (edit: se débarrasser de) tout le texte entre [ et ] (et les parenthèses). Quelle est la meilleure façon de le faire? Voici ma tentative incertaine de l'aide de regex et le stingr package:
str_extract(text, "\\[[a-z]*\\]")
Merci pour toute aide!
Définir les supprimer.. Vous voulez la remplacer par une valeur, ou la valeur null? Ou vous voulez faire correspondre le texte à l'intérieur?
Je voudrais les crochets et le texte à l'intérieur des partis.
édité à la question.
Je voudrais les crochets et le texte à l'intérieur des partis.
édité à la question.
OriginalL'auteur Michael Davidson | 2014-05-31
Vous devez vous connecter pour publier un commentaire.
:
Ce que la regex signifie:
Vous êtes le bienvenu. Pour info, en général, un caractère niées classe comme ici sera plus rapide que d'un point paresseux star, comme dans
.*?
parce que le moteur revient à chaque étape. Pas un gros problème dans ce cas, la solution est très bien. 🙂merci pour vos encouragements sur ce compagnon je vais le faire jusqu'à vous. 🙂
OriginalL'auteur zx81
Suivants devraient faire l'affaire. Le
?
forces paresseux match, ce qui correspond à quelques.
que possible avant la subséquente]
.OriginalL'auteur jbaums
Ici a une autre approche:
OriginalL'auteur Tyler Rinker
Pas besoin d'utiliser une regex PCRE avec un caractère niées classe /support d'expression, un "classique" TRE regex ne fonctionne, trop:
Voir le en ligne R démo
Détails:
\\[
- un littéral[
(doit être échappé ou utilisé à l'intérieur d'une expression entre crochets, comme[[]
être analysée comme un littéral[
)[^]]*
- un niée support d'expression qui correspond à 0+ caractères autres que]
(à noter que la]
au début de l'expression entre crochets est traité comme un littéral]
)]
- un littéral]
(ce personnage n'est pas spécial à la fois PCRE et TRE les expressions régulières et n'a pas à être échappé).Si vous voulez seulement de remplacer les crochets avec quelques autres délimiteurs, utiliser une capture d'un groupe avec un la référence arrière dans le modèle de remplacement:
Voir une autre démo
La
(...)
entre parenthèses construire des formes d'une capture d'un groupe, et son contenu peut être accessible avec une référence arrière\1
(comme le groupe est le premier dans le modèle, son ID est réglé sur 1).OriginalL'auteur Wiktor Stribiżew
Je pense que cette technique répond à ce que vous avez demandé, mais vous voudrez probablement ajouter un
\\:
à la fin de la regex pour plus joli texte (enlever le côlon et de l'espace).vs...
Créé sur 2018-08-16 par le reprex paquet (v0.2.0).
OriginalL'auteur Nettle