ruby 1.8.7的正则表达式代码

时间:2013-09-04 07:38:06

标签: ruby regex

我是正则表达式的新手

我正在尝试为我的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文件导入我的程序。

1 个答案:

答案 0 :(得分:6)

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

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

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

相关问题