我想提取特定字符串后面的数字。
如何使用正则表达式在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>
答案 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}
模式。