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

前端之家收集整理的这篇文章主要介绍了正则表达式 – 从R中的字符串中提取数字模式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我对正则表达式比较陌生,而且我正陷入死胡同.我有一个数据框,其列如下所示:

year1
GMM14_2000_NGVA
GMM14_2001_NGVA
GMM14_2002_NGVA
...
GMM14_2014_NGVA

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

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

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

142000
142001

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

谢谢

解决方法

@H_403_32@ 使用以下gsub:

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

IDEONE demo

正则表达式细分:

比赛…

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

删除它们.

作为备选,

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

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

猜你在找的正则表达式相关文章