我是正则表达的新手
我正在尝试为我的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文件导入我的程序.
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替换为"字符.而不是#,您可以使用您知道的文件中不存在的任何字符或字符串.