是否有一个R函数来查找字符向量中的正则表达式匹配的索引?

Rya*_*son 5 regex r match

我正在寻找一个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)