我正在寻找一个R函数,match它只用于正则表达式匹配而不是相等.换句话说,如果我有一个变量r是正则表达式的字符向量和变量x是一个字符向量,我希望函数返回一个数字向量,其长度与r给出的每个正则表达式相同匹配该正则表达式的第一个元素.请注意,我不希望正则表达式匹配的字符串中的位置.我想要匹配每个正则表达式的元素的索引.
Bra*_*sen 11
你只是在寻找grep:
x <- c("arm","foot","lefroo", "bafoobar")
r <- c("ar","^ba","$m","foo")
Run Code Online (Sandbox Code Playgroud)
获取第一个正则表达式匹配索引:
sapply(r, function(y) grep(y,x)[1])
ar ^ba $m foo
1 4 NA 2
Run Code Online (Sandbox Code Playgroud)
获取所有正则表达式匹配索引:
sapply(r, function(y) grep(y,x))
$ar
[1] 1 4 # returns matches of ar in x
$`^ba`
[1] 4
$`$m`
integer(0)
$foo
[1] 2 4
Run Code Online (Sandbox Code Playgroud)