加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

R的正则表达式前瞻性

发布时间:2020-12-14 06:01:33 所属栏目:百科 来源:网络整理
导读:我试图使用正则表达式使用stringr包来提取一些文本.出于某种原因,我得到了’无效的正则表达式’错误.我在一些网站测试工具中尝试了正则表达式,它似乎在那里工作.我想知道是否有一些关于 regex如何在R中工作的独特之处,特别是在stringr包中. 这是一个例子: s
我试图使用正则表达式使用stringr包来提取一些文本.出于某种原因,我得到了’无效的正则表达式’错误.我在一些网站测试工具中尝试了正则表达式,它似乎在那里工作.我想知道是否有一些关于 regex如何在R中工作的独特之处,特别是在stringr包中.

这是一个例子:

string <- c("MARKETING:  Vice President","FINANCE:  Accountant I","OPERATIONS: Plant Manager")

pattern <- "[A-Z]+(?=:)"
test <- gsub(" ","",string)
results <- str_extract(test,pattern)

这似乎不起作用.我想在其中没有“:”的情况下获得“营销”,“财务”和“运营”.这就是我使用前瞻语法的原因.我意识到我可以解决这个问题:

pattern <- "[A-Z]+(:)"
test <- gsub(" ",string)
results <- gsub(":",str_extract(test,pattern))

但我预计在不久的将来,我可能需要使用外观来处理比这更复杂的情况.

我是否需要通过一些转义或某些东西修改正则表达式才能使其工作?

解决方法

Lookahead断言要求您将正则表达式标识为R中的perl正则表达式.

str_extract(string,perl(pattern))
# [1] "MARKETING"  "FINANCE"    "OPERATIONS"

您也可以在基地R中轻松完成此操作:

regmatches(string,regexpr(pattern,string,perl=TRUE))
# [1] "MARKETING"  "FINANCE"    "OPERATIONS"

regexpr发现匹配和重新匹配使用匹配数据来提取子字符串.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读