【发布时间】:2011-09-06 03:51:33
【问题描述】:
我正在寻找一种在 R 中使用正则表达式返回引用的优雅方式。让我解释一下:
假设我想查找以月份名称开头的字符串:
x <- c("May, 1, 2011", "30 June 2011")
grep("May|^June", x, value=TRUE)
[1] "May, 1, 2011"
这可行,但我真的想隔离月份(即“May”,而不是整个匹配的字符串。
因此,可以使用gsub 使用substitute 参数返回反向引用。但这有两个问题:
- 您必须将模式包装在“.*(pattern).*)”中,以便替换发生在整个字符串上。
-
gsub不是为不匹配的字符串返回 NA,而是返回原始字符串。这显然不是我想要的:
代码和结果:
gsub(".*(^May|^June).*", "\\1", x)
[1] "May" "30 June 2011"
我可能可以通过执行各种额外检查来编写解决方法,但这很快就会变得非常混乱。
为了一目了然,期望的结果应该是:
[1] "May" NA
有没有简单的方法来实现这一点?
【问题讨论】: