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

R正则表达式在单引号之间获取文本

发布时间:2020-12-14 05:49:11 所属栏目:百科 来源:网络整理
导读:我有文字喜欢 la-c("case when ANTIG_CLIENTE = 4 then '01: ANTIG_CLIENTE = 4' when ANTIG_CLIENTE = 8 then '02: ANTIG_CLIENTE = 8' else '99: Error' end ") 我想在单引号之间提取文本作为列表: "01: ANTIG_CLIENTE = 4","02: ANTIG_CLIENTE = 8","99:
我有文字喜欢

la<-c("case when ANTIG_CLIENTE <= 4 then '01: ANTIG_CLIENTE <= 4' when ANTIG_CLIENTE <= 8 then '02: ANTIG_CLIENTE <= 8' 
else '99: Error' end ")

我想在单引号之间提取文本作为列表:

"01: ANTIG_CLIENTE <= 4","02: ANTIG_CLIENTE <= 8","99: Error"

我尝试了两种方法却没有成功

> sub('[^]+"([^']+).*','1',la)
Error: ']' is an unrecognized escape in character string starting "'[^]"
> regmatches(x,gregexpr('"[^']*"',la))[[1]]
Error: unexpected ']' in "regmatches(x,gregexpr('"[^']"

如何在单引号之间获取文本?

解决方法

这应该得到你想要的.唯一的假设是你在单引号之间想要的所有字符串都包含一个冒号(否则,我们应该如何区分’01:ANTIG_CLIENTE< = 4'来自'当ANTIG_CLIENTE< = 8 then'时,两者都在单个之间引号)?

> regmatches(la,gregexpr("'[^']*?1*'",la))
[[1]]
[1] "'01: ANTIG_CLIENTE <= 4'" "'02: ANTIG_CLIENTE <= 8'" "'99: Error'"

基本上,我们试图返回单引号形式的所有表达式(因此gregexpr而不是regexpr),除了单引号,冒号,单引号,单引号之外的东西.

如果你想在返回的内容中删除单引号,你需要前瞻和后瞻,这需要告诉R将你的正则表达式解释为perl:

> regmatches(la,gregexpr("(?<=')[^']*?2*(?=')",la,perl=T))
[[1]]
[1] "01: ANTIG_CLIENTE <= 4" "02: ANTIG_CLIENTE <= 8" "99: Error"

(编辑:李大同)

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

    推荐文章
      热点阅读