Partial string matching using patterns
Solution 1
The grep
function supports regular expressions and with regular expressions, you can match almost anything
y<- c("I am looking for a dog", "looking for a new dog", "a dog", "I am just looking")
grep("looking.*dog",y, value=T)
# [1] "I am looking for a dog" "looking for a new dog"
Here this pattern looks for looking
then "maybe something" then dog
. So that should do what you want.
Solution 2
In regular expressions, ^
specifies the beginning of the string, $
specifies the end, thus:
y<- c("I am looking for a dog", "looking for a new dog", "a dog", "I am just looking")
grep("^looking.*dog$", y)
[1] 2
DonDyck
Updated on June 13, 2022Comments
-
DonDyck almost 2 years
I need to write a query in R to match partial string in column names. I am looking for something similar to LIKE operator in SQL. For e.g, if I know beginning, middle or end part of the string I would write the query in format:
LIKE 'beginning%middle%'
in SQL and it would return matching strings. In
pmatch
orgrep
it seems I can only specify 'beginning' , 'end' and not the order. Is there any similar function in R that I am looking for?For example, say I am looking in the vector:
y <- c("I am looking for a dog", "looking for a new dog", "a dog", "I am just looking")
Let's say I want to write a query which picks
"looking for a new dog"
and I know start of the string is"looking"
and end of string is"dog"
. If I do agrep("dog",y)
it will return1,2,3
. Is there any way I can specify beginning and end ingrep
?