匹配gsub/r中的last和first括号,并保留其余内容

Kon*_*rad 5 regex replace r punctuation gsub

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

[-0.2122,-0.1213)
[-0.2750,-0.2122)
[-0.1213,-0.0222)
[-0.1213,-0.0222)
Run Code Online (Sandbox Code Playgroud)

我想删除[,)所以我可以获得所需的结果:

-0.2122,-0.1213
-0.2750,-0.2122
-0.1213,-0.0222
-0.1213,-0.0222
Run Code Online (Sandbox Code Playgroud)

尝试

1 - 团体,

我想在语法的路线上捕获第一组和第二组:

[[^\[{1}(?![[:digit:]])\){1}
Run Code Online (Sandbox Code Playgroud)

但它似乎没有用,(regex101).

2 - 标点符号

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

比赛

3 - 再次组

然后我尝试匹配这两组:(\[)(\))但是,再次,不缺乏regex101.


通过应用gsub两次或使用包中的multigsub可用性可以很容易地解决问题,qdap但我有兴趣通过一个表达式来解决这个问题.

Tho*_*mas 3

您可以尝试在 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"
Run Code Online (Sandbox Code Playgroud)

  • 听起来有点过头了,同时,我会用两个捕获组将数字分开 (5认同)