我希望在R中使用正则表达式寻找以月份名称开头的字符串,并以一种简洁的方式返回相关引用。让我解释一下:
x <- c("May, 1, 2011", "30 June 2011")
grep("May|^June", x, value=TRUE)
[1] "May, 1, 2011"
这个方法可以实现功能,但我想要的是只提取月份(比如说“五月”而不是整个被匹配到的字符串)。
所以,可以使用 gsub
函数并设置 substitute
参数来返回反向引用。但这种方法有两个问题:
- 你需要将匹配模式包含在 ".*(pattern).*)" 中,以便替换出整个字符串。
gsub
函数会返回原始字符串而非 NA 值,对于未匹配到的字符串这显然不是我想要的结果:
代码和结果如下:
gsub(".*(^May|^June).*", "\\1", x)
[1] "May" "30 June 2011"
我可能可以通过进行各种额外的检查来编写一个解决方法,但这很快就会变得非常混乱。
明确的是,期望的结果应该是:
[1] "May" NA
有没有一种简单的方法可以实现这个?