我是正则表达式的新手
我正在尝试为我的ruby代码编写一个正则表达式,用于检测双引号逗号之间的双重引号。
我有这个正则表达式在ruby 1.9.3中运行良好
/(?<!^|,)"(?!,|$)/
这个数组字符串。
s =(“name:”,“1234”,,, “S.M.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.
非常感谢你帮我编写ruby 1.8.7的正则表达式代码
我希望这个数组字符串为
s =(“name:”,“1234”,,, “S.M.red B Tease”)
这样我就可以轻松地将其作为.csv文件导入我的程序。
答案 0 :(得分:6)
Ruby 1.8.7没有lookbehind;这就是为什么它失败了。所以我想出了这个黑客。它的优点是可以保留不需要的“字符”中的文本。
'"ab","c"d"e",,,"f"'.gsub(/(^\")|(\",+\")|(\"$)/) {|s|s.gsub('"','#')}.gsub('"',"'").gsub('#','"')
=> "\"ab\",\"c'd'e\",,,\"f\""
我在这里所做的是将所有“在开头或结尾,或者只用逗号分隔”替换为#字符;然后将所有剩余的“替换为'字符;然后将#back替换为“字符。而不是#,您可以使用您知道的文件中不存在的任何字符或字符串。