R RegEx:匹配方括号内的所有双引号(“)字符

问题描述 投票:0回答:2

我正在努力获得一个与所有出现在方括号内的双引号字符(")匹配的RegEx表达式。

我有不同的作品来完成我想要的部分。例如,

gsub('"', "", '"""xyz"""')
[1] "xyz"

将获得所有双引号,而不管其他任何内容。

gsub('\\[(.*?)\\]', "", '[xyz][][][]abc')
[1] "abc"

将所有内容都放在两个方括号内,包括方括号本身(我不想发生-如何避免这种情况?)。

我也不确定一旦将它们都工作后如何将两者结合。这是所需行为的示例。给定一个输入字符串["cats", "dogs"]"x",我想要一个表达式,该表达式将替换方括号内的四个"字符,而不是方括号内的四个。

更具体地说:

gsub('THE_REGEX', "", '["cats", "dogs"]"x"')

应该返回

[cats, dogs]"x"

当双引号出现在方括号内时,我想删除双引号,但是当双引号出现在方括号内时,我不想删除。

我正在努力获得一个正则表达式,该表达式与方括号中出现的所有双引号字符(“)匹配。我有不同的代码来满足我想要的部分。例如,gsub('”',“。 ..

r regex gsub
2个回答
2
投票

基于\G的模式可确保匹配之间保持连续性,并且始终位于方括号之间:

gsub('(?:\\G(?!\\A)|\\[)[^]"]*\\K"', "", '["cats", "dogs"]"x"', perl=TRUE)

2
投票

使用gsubfn搜索[...],然后将每个匹配项传递给所指示的gsub函数。比赛以外的所有事物都将保持不变。

© www.soinside.com 2019 - 2024. All rights reserved.