Expression régulière pour saisir le mot avant un certain caractère R Perl
J'ai besoin d'obtenir les mots avant et après un caractère unique (dans mon cas: &) dans une chaîne de caractères dans R.
J'ai besoin d'obtenir 'mot1' à partir de quelque chose comme ceci:
"...quelque chose de quelque chose word1 & mot2 quelque chose..."
Je peux obtenir le mot à l'aide d'une expression régulière Perl dans R: (?<=& )[^ ]*(?= )
(Il semble se comporter de la façon dont je le voudrais. Je l'ai eu à partir de peigner les réponses que j'ai trouvé sur ce site)
J'ai maintenant besoin pour obtenir le mot qui précède l' &
symbole. La longueur des mots de changement et le nombre d'autres mots précédents, et également des espaces, le changement. Mot on pourrait être des lettres et des chiffres, tout lié par des espaces sur les côtés.
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez
(\S+)\s*&\s*(\S+)
puis les mots des deux côtés de&
va être capturée. Cela permet en option les espaces autour de l'esperluette.Vous avez besoin pour doubler les barres obliques inverses dans un R de chaîne, et d'utiliser le
regexec
etregmatches
fonctions d'appliquer le modèle et l'extrait de la correspondance de sous-chaînes.Maintenant
words
est un élément de la liste de la tenue d'un trois-élément de vecteur: l'ensemble de la chaîne correspondante suivie par la première et la deuxième des références arrières. Doncwords[[1]][2]
estword1
etwords[[1]][3]
estword2
."\x{A0}"
. Vous pouvez corriger cela en utilisant([^\s\xA0]+)\s*&\s*([^\s\xA0]+)
à la place. Note que c'est la syntaxe de Perl. Je sais très peu de choses sur R et que peut ou peut ne pas être la bonne façon d'ajouter un caractère à l'aide de son code de point.Va correspondre à tout ce qui est un caractère de mot entre
&
symboles. Utilise un positif lookbehind et une anticipation positif.La parole sera capturé dans le groupe 1. C'est un peu réticents match contenues dans une chaîne entourée par deux limites; après la seconde limite est
&
.Il peut être fait avec un relativement simple expression régulière en utilisant
strapplyc
dans le gsubfn paquet. En supposant ques
est votre chaîne: