匹配 gsub/r 中的最后一个和第一个括号,并保持其余内容不变
Matching last and first bracket in gsub/r and leaving the remaining content intact
我正在使用以下格式的字符向量:
[-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
两次或使用 qdap
包中可用的 multigsub
可以轻松解决问题,但我有兴趣解决通过一个表达式,这是可能的。
您可以尝试在 Perl-style 正则表达式中使用先行和后行。
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"
我正在使用以下格式的字符向量:
[-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
两次或使用 qdap
包中可用的 multigsub
可以轻松解决问题,但我有兴趣解决通过一个表达式,这是可能的。
您可以尝试在 Perl-style 正则表达式中使用先行和后行。
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"