Alors que dans la plupart des cas, j'irais avec stringr
paquet comme déjà suggéré dans la réponse de CPak, il y a aussi une solution de grep à ceci:
# create the sample string
c <- ("She sold seashells by the seashore, and she had a great time while doing so.")
# match any sold and great string within the text
# ignore case so that Sold and Great are also matched
grep("(sold.*great|great.*sold)", c, value = TRUE, ignore.case = TRUE)
Hmm, pas mal, non? Mais que se passerait-il s'il y avait un mot contenant simplement l'expression sold
ou great
?
# set up alternative string
d <- ("She saw soldier eating seashells by the seashore, and she had a great time while doing so.")
# even soldier is matched here:
grep("(sold.*great|great.*sold)", d, value = TRUE, ignore.case = TRUE)
Vous pouvez utiliser des limites de mots, correspondent-à-dire le mot entier:
# \\b is a special character which matches word endings
grep("(\\bsold\\b.*\\bgreat\\b|\\bgreat\\b.*\\bsold\\b)", d, value = TRUE, ignore.case = TRUE)
le \\b
matchs du premier caractère de la chaîne, le dernier caractère de la chaîne ou entre deux caractères où l'on Appartient à un mot et l'autre ne fonctionne pas:
Plus sur le \b
métacaractère ici:
Merci, mais je suis en train de chercher une ligne qui contient les deux, pas un mot. Si la ligne s'est vendue mais pas géniale, je ne veux pas que la ligne soit retournée. – intern14
@ intern14, excuses, j'ai mal compris. Voir ma modification ci-dessus. –