Ruby 有没有办法在两个双引号内匹配双引号?

Ruby 有没有办法在两个双引号内匹配双引号?,ruby,regex,Ruby,Regex,我尝试了以下正则表达式,但它匹配所有双引号: (?>(?<=(")|))"(?(1)(?!")) 我想匹配的模式是第2行的双引号之间的双引号作为一般规则,我会说:否 给定一个字符串: \"Burger\" \"Decaf\" shirt\" 你如何决定哪个是多余的(不匹配的)?这个是在汉堡之后,一个在脱咖啡因之后,还是在衬衫之后,还是在这些词之前?我相信这个选择是任意的 尽管在您的特定示例中似乎希望所有的\“都与逗号不相邻 这些可以通过以下regexp找到: (?<!^)(

我尝试了以下正则表达式,但它匹配所有双引号:

(?>(?<=(")|))"(?(1)(?!"))

我想匹配的模式是
第2行的双引号之间的双引号作为一般规则,我会说:

给定一个字符串:

\"Burger\" \"Decaf\" shirt\"
你如何决定哪个是多余的(不匹配的)?这个是在汉堡之后,一个在脱咖啡因之后,还是在衬衫之后,还是在这些词之前?我相信这个选择是任意的

尽管在您的特定示例中似乎希望所有的
\“
都与逗号不相邻

这些可以通过以下regexp找到:

(?<!^)(?<![,\[])\\"(?![,\]])

假设字符串的格式必须如下所示:

["item1", "item2", ... "itemN"]
知道双引号是否为右引号的方法是检查它后面是否有逗号或右括号。 要查找由双引号括起来的双引号,必须从开始到意外引号匹配所有格式良好的项目

查找第一个随附报价(如果存在)的示例:

但是,这只适用于所有字符串中的一个封闭引号,如果要查找所有引号,则没有用处

要查找所有引号,请执行以下操作:

(?:\G(?!\A)|(?:\A[^"]*|[^"]*",\s*)(?:"[^"]*",\s*)*+")[^"]*\K"(?!\s*[\],])

也许吧。@Stribizov非常感谢。这就像是正则表达式网站的魅力所在,但当我在我的Ruby代码中尝试这一点时,它的工作方式不同,而且它无法接受。我想正则表达式对ruby有不同的语法来匹配它。谢谢@Mirosław Zalewski,这很有效,细节对于理解我在模式中遗漏了什么非常有用。我也想到了同样的问题,但这是在解决了其他3个奇怪的模式之后。非常感谢@Casmir!也很有帮助!
["item1", "item2", ... "itemN"]
(?:"[^"]*",\s*)*+"[^"]*\K"
(?:\G(?!\A)|(?:\A[^"]*|[^"]*",\s*)(?:"[^"]*",\s*)*+")[^"]*\K"(?!\s*[\],])