如何在正则表达式中包含对象

dmv*_*nna 8 regex r object

namez <- c("foo2003", "bar2340", "naught45")
patternz <- "03"
grepl("[patternz]$",namez)
Run Code Online (Sandbox Code Playgroud)

这是行不通的.我应该用[patternz]替换什么,所以正则表达式将匹配patternz变量的内容?

[编辑]请注意,我想分别匹配字符串"03",而不是数字"0"和"3".

Rei*_*son 10

必须承认在这里努力查看问题所在.对于所述的例子不过是

R> namez <- c("foo2003", "bar2340", "naught45")
R> patternz <- "03"
R> grepl(patternz, namez)
[1]  TRUE FALSE FALSE
Run Code Online (Sandbox Code Playgroud)

是必需的,因为patternz 一个字符向量,目标不是匹配0 & 3但匹配文字"03"

如果你只需要在字符串的末尾匹配,那么我们需要"$"手动添加:

R> patternz2 <- "03$"
R> grepl(patternz2, namez)
[1]  TRUE FALSE FALSE
Run Code Online (Sandbox Code Playgroud)

或通过paste0()操作

R> grepl(paste0(patternz, "$"), namez)
[1]  TRUE FALSE FALSE
Run Code Online (Sandbox Code Playgroud)

问题是使用patternz实际的正则表达式和基本R函数完美地处理这个问题.


Cha*_*ase 5

看起来你需要创建一个字符向量grepl(),使用paste0()似乎工作,虽然不是那么优雅:

> grepl(paste0("[", patternz, "]$"), namez)
[1]  TRUE  TRUE FALSE
Run Code Online (Sandbox Code Playgroud)