ruby 1.8.7的正则表达式代码

Dee*_*Jha 1 ruby regex

我是正则表达的新手

我正在尝试为我的ruby代码编写一个正则表达式,用于检测双引号逗号之间的双重引号.

我有这个正则表达式在ruby 1.9.3中运行良好

 /(?<!^|,)"(?!,|$)/
Run Code Online (Sandbox Code Playgroud)

对于这个数组字符串.

s =("name:","1234",,, "SM red"B"Tease")

斜体s [4]在双引号中有双重逗号.

在ruby 1.9.3中,上面写的正则表达式检测s [4]即("B")

我试图为ruby 1.8.7编写这个正则表达式,它给出了错误

 Undefined (?...) sequence. You might be trying to use named groups with Ruby 1.8.7.
Run Code Online (Sandbox Code Playgroud)

非常感谢你帮助我为ruby 1.8.7编写这个正则表达式代码

我希望这个数组字符串为

s =("name:","1234",,, "SM red B Tease")

这样我就可以轻松地将它作为.csv文件导入我的程序.

Chr*_*nix 6

Ruby 1.8.7没有lookbehind; 这就是为什么它失败了.所以我想出了这个黑客.它的优点是可以保留不需要的"字符"内的文本.

'"ab","c"d"e",,,"f"'.gsub(/(^\")|(\",+\")|(\"$)/) {|s|s.gsub('"','#')}.gsub('"',"'").gsub('#','"')
=> "\"ab\",\"c'd'e\",,,\"f\""
Run Code Online (Sandbox Code Playgroud)

我在这里做的是将所有"在开头或结尾,或只用逗号分隔"替换为#字符;然后将所有剩余的"替换为'字符; 然后将#back替换为"字符.而不是#,您可以使用您知道的文件中不存在的任何字符或字符串.