web-dev-qa-db-fra.com

Utiliser grep dans R pour trouver des chaînes en tant que mots entiers (mais pas des chaînes en tant que mots)

Je cherche la bonne expression régulière. Le suivant

t1 = c("IGF2, IGF2AS, INS, TH", "TH", "THZH", "ZGTH")
grep("TH",t1, value=T)

renvoie tous les éléments de t1, mais seuls le premier et le second sont corrects. Je veux juste que les entrées avec Word/phrase TH soient renvoyées?

24
Hans

Vous devez ajouter les ancres de limite de mot (\b) autour de vos chaînes de recherche afin que seuls les mots entiers soient mis en correspondance (c'est-à-dire des mots entourés de caractères autres que des mots ou de début/fin de chaîne), où "caractère de mot" signifie \w, c'est-à-dire Caractère alphanumérique).

Essayer

grep("\\bTH\\b",t3, value=T)
34
Tim Pietzcker

Vous pouvez utiliser \< et \> dans une expression rationnelle pour correspondre au début/à la fin du mot.

grep ("\\<TH\\>", t1) etc.

16
Anatoliy

Une autre option:

grep("^TH$",t1, value=T)
0
Ferroao