正则表达式在R中的特定字符串后得到一个数字

时间:2016-12-04 21:56:23

标签: r regex

我想提取特定字符串后面的数字。

如何使用正则表达式在R中执行此操作?

示例:在给定字符串中,如何在“year”之后提取2016年的数字。这些是发生年度和2016年组合的一些可能情况。

<p>Year:2016</p>
<p> year-2016 </p>
<p> year: 2016 </p>
<p>Year : 2016</p>
<p> year - 2016</p>
<p>YEAR : 2016</p>

2 个答案:

答案 0 :(得分:1)

使用gsub:

gsub(x = "year:-2016", pattern = "[^0-9]", replacement = "")

在这里你用一个空字符串替换除数字之外的所有内容。如果您需要一个号码,可以使用as.numeric功能。

答案 1 :(得分:0)

通常,像这样的正则表达式匹配:year[^0-9]*[0-9]{4}

  • 您需要为year设置不区分大小写的选项以匹配yEar等。
  • 匹配单词[0-9]{4}后面的一组四个数字year
  • 除了year之外,还可以在[^0-9]*和四个数字之间设置任何其他字符。

因此,这将匹配您的所有测试用例。

<p>Year:2016</p>
<p> year-2016 </p>
<p> year: 2016 </p>
<p>Year : 2016</p>
<p> year - 2016</p>
<p>YEAR : 2016</p>

感谢@ MatthewLundberg关于无法简单捕获R 中的匹配部分的评论,可能的解决方案可能是先grep模式year[^0-9]*[0-9]{4}提取包含模式的字符串,然后仅提取[0-9]{4}模式。