正则表达式 – 如何在R中使用`grep`的反向引用?
发布时间:2020-12-14 06:30:08 所属栏目:百科 来源:网络整理
导读:我正在寻找一种优雅的方式使用R中的正则表达式返回引用.我解释: 假设我想要找到以月份名称开头的字符串: x - c("May,1,2011","30 June 2011")grep("May|^June",x,value=TRUE)[1] "May,2011" 这是有效的,但我真的想隔离这个月份(即“May”,而不是整个匹配的
我正在寻找一种优雅的方式使用R中的正则表达式返回引用.我解释:
假设我想要找到以月份名称开头的字符串: x <- c("May,1,2011","30 June 2011") grep("May|^June",x,value=TRUE) [1] "May,2011" 这是有效的,但我真的想隔离这个月份(即“May”,而不是整个匹配的字符串. 所以,可以使用gsub使用substitute参数返回回参考.但这有两个问题: >你必须将模式包装在“.*(pattern).*)”中,以便在整个字符串上进行替换. 代码和结果: gsub(".*(^May|^June).*","1",x) [1] "May" "30 June 2011" 我可以通过进行各种额外的检查来编写一个解决方法,但这很快就变得非常混乱. 要清楚,所需的结果应该是: [1] "May" NA 有没有办法实现这一点?
stringr包具有完全为此目的的功能:
library(stringr) x <- c("May,"30 June 2011","June 2012") str_extract(x,"May|^June") # [1] "May" NA "June" 这是一个围绕regexpr的相当薄的包装器,但是stringr通常使得字符串处理比基本R函数更加一致. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |