Disons que j'ai une chaîne: J'aimerais analyser la chaîne et retourner "yay, chaîne!" p> Comment puis-je faire ça? P> J'ai essayé un tas de grep / grepl / gsub / sub /c. mais je n'ai pas trouvé la bonne combinaison de regex ni d'arguments. Soupir. J'ai besoin de travailler sur les compétences des regex. p> p>
3 Réponses :
Voici de deux façons de le faire:
One: strong> Trouvez la chaîne souhaitée et remplacez la chaîne entière avec le bit trouvé. (Connu sous le nom de renvoi arrière) p> Ceci fonctionne parce que: p> deux: strong> Remplacez tous les bits que vous ne voulez pas avec des chaînes vides: p> Ceci fonctionne car Le
\\ 1 code> pour faire référence à la chaîne correspondante des parenthèses (. *) code> li>
\\ ( code> et \\) code>. li>.
ul> | code> est similaire à ou code>. p> p>
Existe-t-il une documentation pour le \\ 1 code> utilisation? J'ai lu à ce sujet au bas de? Grep mais je ne l'ai pas compris.
@BrandOnbertelsen J'ai légèrement élargi la réponse, mais en général, mon conseil est d'apprendre regex de n'importe où, mais les Docs R. Par exemple, voici un Tutoriel sur les backreferences
@Brandonbertelsen J'ai également ajouté l'approche opposée, c'est-à-dire remplacer les bits que vous ne voulez pas avec des chaînes vides.
Appréciez l'attention supplémentaire ici et le lien vers le tutoriel.
Version QDAP 1.1.0 peut faire ceci: rendements: p> si vous ne faites pas beaucoup de choses, alors obtenez qdap Peut-être un peu de surpuger. p> EDIT: avec l'exemple de Josh ... P> > x <- "This is (a) string (Yay, string!)"
> bracketX(x)
[1] "This is string"
> bracketXtract(x)
[1] "a" "Yay, string!"
En outre, si certaines de vos chaînes peuvent contenir plusieurs sous-chaînes parenthèses, toutes les utilisations que vous souhaitez extraire, utilisez le REGEX Power-Outils GREGEXPR () CODE> et REGMATCHES () CODE >: x <- "This is (a) string (Yay, string!)"
pat <- "(?<=\\()([^()]*)(?=\\))"
regmatches(x, gregexpr(pat, x, perl=TRUE))
# [[1]]
# [1] "a" "Yay, string!"
Et juste comme ça, je vois maintenant que ma réponse b> est un dupliqué exact de celui référencé il y a un instant par Tyler Rinker ci-dessus!
C'était la base du Backetx code> et Backetxtract code> fonction dans qdap code>. J'ai posé une question similaire et fournit encore plus de détails ici: Stackoverflow.com/questions/8621066/...
J'ai vu cette question, mais c'était beaucoup trop complexe pour ma compréhension limitée de la regex.
Vous voulez dire que vous ne parlez pas "(? <= \\ () ([^ ()] *) (? = \\))" code>? ;-)
Dupliqué possible de Extrait Info à l'intérieur de toutes les parenthèses dans R (regex) A >
Certainement d'une dupe, mais les réponses semblent différentes.
STRAPLLYC CODE> Dans le package GSUBFN gère des problèmes comme ça. L'expression régulière dans le code suivant correspond à( code> suivi de n'importe quel nombre de caractères non) code> et renvoie la pièce dans les parenthèses:bibliothèque (gsubfn); STRAPLLYC (x, "\\ ((([^)] *)", SIMPLIFY = true) code> Par défaut, il utilise des expressions régulières TCL qui sont assez rapides, par exemple. Vérifiez les exemples dans? strapplyclyclyclyclyclyclyclyc > pour celui qui analyse l'ensemble du texte de James Joyce's Ulysse en quelques secondes. En ce qui concerne l'apprentissage sur l'apprentissage de Regex, il existe des liens vers des ressources surgènes sur la page d'accueil GSubfn gsubfn.googlecode.com .