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

正则表达式 – 从R中的字符串中提取数字模式

发布时间:2020-12-14 06:06:19 所属栏目:百科 来源:网络整理
导读:我对正则表达式比较陌生,而且我正陷入死胡同.我有一个数据框,其列如下所示: year1GMM14_2000_NGVAGMM14_2001_NGVAGMM14_2002_NGVA...GMM14_2014_NGVA 我试图在字符串中间提取年份(2000,2001等).到目前为止,这是我的代码 gsub("[^0-9]","",year1)) 返回数字,
我对正则表达式比较陌生,而且我正陷入死胡同.我有一个数据框,其列如下所示:

year1
GMM14_2000_NGVA
GMM14_2001_NGVA
GMM14_2002_NGVA
...
GMM14_2014_NGVA

我试图在字符串中间提取年份(2000,2001等).到目前为止,这是我的代码

gsub("[^0-9]","",year1))

返回数字,但它也返回14作为字符串的一部分:

142000
142001

有关如何从模式中排除14或如何更有效地提取年份信息的任何想法?

谢谢

解决方法

使用以下gsub:

s  = "GMM14_2002_NGVA"
gsub("^[^_]*_|_[^_]*$",s)

见IDEONE demo

正则表达式细分:

比赛…

> ^ [^ _] * _ – 从字符串和a_开头的_以外的0个或更多字符
> | – 要么…
> _ [^ _] * $ – 字符串末尾的_和0以外的字符

并删除它们.

作为备选,

library(stringr)
str_extract(s,"(?<=_)d{4}(?=_)")

Perl-like正则表达式匹配用下划线括起来的4位子字符串.

(编辑:李大同)

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

    推荐文章
      热点阅读