在R中,是否可以从正则表达式匹配中提取组捕获?据我所知,grep个、grepl个、regexpr个、gregexpr个、sub个或gsub个都没有返回组捕获的内容.

我需要从编码如下的字符串中提取键值对:

\((.*?) :: (0\.[0-9]+)\)

我总是可以只做多个完全匹配的grep,或者做一些外部(非R)处理,但我希望我可以在R中完成这一切.是否有一个函数或一个包提供了这样的函数来实现这一点?

推荐答案

stringr个包裹里的str_match()个就可以了.它返回一个字符矩阵,匹配中的每个组有一列(整个匹配有一列):

> s = c("(sometext :: 0.1231313213)", "(moretext :: 0.111222)")
> str_match(s, "\\((.*?) :: (0\\.[0-9]+)\\)")
     [,1]                         [,2]       [,3]          
[1,] "(sometext :: 0.1231313213)" "sometext" "0.1231313213"
[2,] "(moretext :: 0.111222)"     "moretext" "0.111222"    

R相关问答推荐

使用map()内的公式()创建多个公式

如何将具有重复名称的收件箱合并到R中的另一列中,而结果不同?

使用R中相同值创建分组观测指标

R中的子集文件—读取文件名索引为4位数字序列,例如0001到4000,而不是1到4000)

在另一个函数中调用ggplot2美学

R-更新面内部的栅格值

删除具有相同标题的tabPanel(shinly)

如果可能,将数字列转换为整数,否则保留为数字

R中的哈密顿滤波

如何将R中数据帧中的任何Nas替换为最后4个值

TreeNode打印 twig 并为其上色

调换行/列并将第一行(原始数据帧的第一列)提升为标题的Tidyr类似功能?

如何提取R中其他字符串和数字之间的字符串?

R中治疗序列的相对时间指数

R基于变量组合创建新的指标列

将文本批注减少到gglot的y轴上的单个值

变异以按组从其他列创建具有最大和最小值的新列

R try Catch in the loop-跳过缺少的值并创建一个DF,显示跳过的内容

如何使用grepl()在数据帧列表中 Select 特定字符串?

如何获取R chromote中的当前URL?