在R中,是否可以从正则表达式匹配中提取组捕获?据我所知,没有一个grep,grepl,regexpr,gregexpr,sub,或gsub返回组拍摄.
我需要从编码的字符串中提取键值对:
\((.*?) :: (0\.[0-9]+)\)
Run Code Online (Sandbox Code Playgroud)
我总是可以做多个全匹配greps,或做一些外部(非R)处理,但我希望我能在R中完成所有操作.是否有一个功能或包提供这样的功能来执行此操作?
是否有可能编写一个返回所需结果的正则表达式?正则表达式通常是包容性的 - 找到匹配.我希望能够将正则表达式转换为相反的 - 断言没有匹配.这可能吗?如果是这样,怎么样?
http://zijab.blogspot.com/2008/09/finding-opposite-of-regular-expression.html声明你应该用你的正则表达式括起来
/^((?!^ MYREGEX ).)*$/
Run Code Online (Sandbox Code Playgroud)
,但这似乎不起作用.如果我有正则表达式
/[a|b]./
Run Code Online (Sandbox Code Playgroud)
,字符串"abc"返回false,我的正则表达式和zijab建议的converse,
/^((?!^[a|b].).)*$/
Run Code Online (Sandbox Code Playgroud)
.是否可以编写正则表达式的反转,或者我是否正在思考错误?
我正在使用文本格式读取数据文件readLines.第一个"列"是我不需要的复杂文本.下一列包含我需要的数据.第一个"列"和数据用冒号(:)分隔.我希望在第一个冒号处拆分每一行并删除生成的文本字符串,仅保留数据.
下面是一个示例数据文件.一个潜在的复杂因素是一行数据包含多个冒号.这条线可能在某些时候成为我的标题.所以,我可能不应该在每个结肠处分开,只是在第一个结肠处.
my.data <- "first string of text..: aa : bb : cc
next string ........ : 2 0 2
third string......1990: 7 6 5
last string : 4 2 3"
my.data2 <- readLines(textConnection(my.data))
my.data2
Run Code Online (Sandbox Code Playgroud)
我试过这里提供的代码:
和这里:
上面第一个链接的代码似乎只在第一行的第一个冒号处分开.第二个链接的代码可能会做我想要的,但对我来说太复杂到目前为止无法成功修改它.
这是我希望获得的数据,此时我可以使用一个非常简单的gsub语句简单地用空格替换第一行中剩余的冒号:
aa : bb : cc
2 0 2
7 6 5
4 2 3
Run Code Online (Sandbox Code Playgroud)
很抱歉,如果这是我未找到的帖子的副本,感谢您提供任何建议或帮助.