相关疑难解决方法(0)

R中的正则表达式组捕获具有多个捕获组

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

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

\((.*?) :: (0\.[0-9]+)\)
Run Code Online (Sandbox Code Playgroud)

我总是可以做多个全匹配greps,或做一些外部(非R)处理,但我希望我能在R中完成所有操作.是否有一个功能或包提供这样的功能来执行此操作?

regex r capture capture-group

87
推荐指数
5
解决办法
4万
查看次数

正则表达式相反

是否有可能编写一个返回所需结果的正则表达式?正则表达式通常是包容性的 - 找到匹配.我希望能够将正则表达式转换为相反的 - 断言没有匹配.这可能吗?如果是这样,怎么样?

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)

.是否可以编写正则表达式的反转,或者我是否正在思考错误?

regex

26
推荐指数
3
解决办法
6万
查看次数

在第一个冒号处拆分字符串

我正在使用文本格式读取数据文件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)

我试过这里提供的代码:

在字符串中的第一个逗号上拆分

和这里:

R:从字符串中删除最后三个点

上面第一个链接的代码似乎只在第一行的第一个冒号处分开.第二个链接的代码可能会做我想要的,但对我来说太复杂到目前为止无法成功修改它.

这是我希望获得的数据,此时我可以使用一个非常简单的gsub语句简单地用空格替换第一行中剩余的冒号:

   aa : bb : cc 
    2    0    2
    7    6    5
    4    2    3
Run Code Online (Sandbox Code Playgroud)

很抱歉,如果这是我未找到的帖子的副本,感谢您提供任何建议或帮助.

regex string r gsub

6
推荐指数
1
解决办法
3831
查看次数

标签 统计

regex ×3

r ×2

capture ×1

capture-group ×1

gsub ×1

string ×1