我正在使用以下格式的字符向量:
[-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。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"