我正在使用以下格式的字符向量:

[-0.2122,-0.1213)
[-0.2750,-0.2122)
[-0.1213,-0.0222)
[-0.1213,-0.0222)


我想删除[)以便获得类似的期望结果:

-0.2122,-0.1213
-0.2750,-0.2122
-0.1213,-0.0222
-0.1213,-0.0222


尝试次数

1-群组,

我正在考虑按照语法来捕获第一组和第二组:

[[^\[{1}(?![[:digit:]])\){1}


但它似乎不起作用,(regex101)。

2-标点符号

代码:[[:punct:]]将捕获所有标点regex101

regex - 匹配gsub/r中的最后一个和第一个括号,并保留其余内容-LMLPHP

3-再次分组

然后,我尝试匹配两个组:(\[)(\)),但是同样,也不乏regex101



可以通过两次应用gsub或利用multigsub包中的qdap轻松解决该问题,但是我有兴趣通过一个表达式解决该问题。

最佳答案

您可以尝试在Perl样式的正则表达式中使用先行和后备。

x <- scan(what = character(),
text = "[-0.2122,-0.1213)
[-0.2750,-0.2122)
[-0.1213,-0.0222)
[-0.1213,-0.0222)")

regmatches(x, regexpr("(?<=\\[).+(?=\\))", x, perl = TRUE))
# [1] "-0.2122,-0.1213" "-0.2750,-0.2122" "-0.1213,-0.0222" "-0.1213,-0.0222"

07-26 01:02