Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ruby 1.8.7的正则表达式代码_Ruby_Regex - Fatal编程技术网

ruby 1.8.7的正则表达式代码

ruby 1.8.7的正则表达式代码,ruby,regex,Ruby,Regex,我不熟悉正则表达式 我正在尝试为我的ruby代码编写一个正则表达式,用于检测双倒逗号之间的双倒逗号 我有一个在ruby 1.9.3中运行良好的正则表达式 /(?<!^|,)"(?!,|$)/ 如果您能帮助我为ruby 1.8.7编写正则表达式代码,我将非常感谢 我想要这个数组字符串作为 s=(“名称:”、“1234”、“s.M.红B色挑逗”) 这样我就可以轻松地将它作为.csv文件导入到我的程序中。Ruby 1.8.7没有lookbehind;这就是你失败的原因。所以我想出了这个方法。

我不熟悉正则表达式

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

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

 /(?<!^|,)"(?!,|$)/
如果您能帮助我为ruby 1.8.7编写正则表达式代码,我将非常感谢

我想要这个数组字符串作为

s=(“名称:”、“1234”、“s.M.红B色挑逗”)


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

Ruby 1.8.7没有lookbehind;这就是你失败的原因。所以我想出了这个方法。它的优点是保留了不需要的“字符”中的文本

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

我在这里要做的是用#字符替换开头或结尾的所有“字符,或者中间只有逗号;然后将所有剩余的“with”字符替换为;然后将#back to”字符替换为。您可以使用您知道不会出现在文件中的任何字符或字符串,而不是#;这就是你失败的原因。所以我想出了这个方法。它的优点是保留了不需要的“字符”中的文本

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

我在这里要做的是用#字符替换开头或结尾的所有“字符,或者中间只有逗号;然后将所有剩余的“with”字符替换为;然后将#back to”字符替换为。您可以使用您知道不会出现在您的文件中的任何字符或字符串来代替#。

您能解释一下您希望原始正则表达式做什么吗?当我在1.9.3中对您的示例数据尝试正则表达式时,它与
B
不匹配,但与引号字符
就在它前面。你可以添加Ruby代码来获得
B
(假设这是你的目标)。用双倒逗号中的空格替换双倒逗号。我必须在csv文件中导入此字符串,但如果此类型(“…”。“…”)此处(…)表示序列的某些文本)存在,则无法导出。从这个字符串“S.M.红色”B“挑逗”我想用空格替换“B”。@Neil Slater很抱歉它会匹配。请回答我坚持用这个代码…堆栈上的正则表达式中没有人好。!!你能解释一下你对原始正则表达式的期望吗?当我在1.9.3中对你的示例数据尝试你的正则表达式时,它不匹配
B
,而是匹配它前面的引号字符
。你能添加Ruby代码来获得
B
(假设这是你的目标)吗。要将双倒逗号替换为双倒逗号中的空格。我必须在csv文件中导入此字符串,但如果此类型(“…”。“…”)此处(…)表示任何内容的某些文本)序列存在,则无法导出。从此字符串“S.M.红色”B“梳理”我要替换“B”“有空格。@Neil Slater很抱歉它会匹配”。请回答我坚持使用此代码…堆栈上的正则表达式中没有人是好的。!!一个可靠的答案。OP也可能有一个非代码解决方案-联系无效CSV的来源并要求他们修复它(无效数据格式可能会无正当理由地花费双方额外的工作),但这并不是我们真正可以提供建议的东西。我认为这是一个可靠的答案。OP也可能有一个非代码解决方案——联系无效CSV的来源,并要求他们修复它(无效数据格式可能会让双方付出额外的工作,但这不是我们真正可以提供建议的东西。