ruby中的一个脚本,用于查找“的所有实例”&引用&引用;并替换为“&引用&引用&引用;

ruby中的一个脚本,用于查找“的所有实例”&引用&引用;并替换为“&引用&引用&引用;,ruby,regex,string,replace,Ruby,Regex,String,Replace,我有一个问题,我需要用两个双引号替换文本周围的一个双引号。采样线在下面 “1”,“未知”,“未知”,“未知”,“假”,“1077.36”,“132”,“8.1618”,“97”,“483”,“1”,“51”,“2010-06-17 20:58:00”,“2013-12-04 12:05:00”,“101”,“白橡树”,“0”,“0”,“1”,“1” 例如,在第一个逗号之前,我想知道括号中的内容。(“1”)我正在使用的脚本如下所示 file_names = ['test.csv'] file_n

我有一个问题,我需要用两个双引号替换文本周围的一个双引号。采样线在下面

“1”,“未知”,“未知”,“未知”,“假”,“1077.36”,“132”,“8.1618”,“97”,“483”,“1”,“51”,“2010-06-17 20:58:00”,“2013-12-04 12:05:00”,“101”,“白橡树”,“0”,“0”,“1”,“1”

例如,在第一个逗号之前,我想知道括号中的内容。(“1”)我正在使用的脚本如下所示

file_names = ['test.csv']

file_names.each do |file_name|

  text = File.read(file_name)

File.write(file_name, text.gsub(/"/, "\"\""))

end
如果mt regex看起来像这样/“{1}/,它将拾取每个双引号,因此这似乎也不起作用


非常感谢您的帮助。谢谢。

如果您不想在单个regexp gsub中进行替换,您可以先用不同的东西替换两个双引号(例如,永不出现的utf-8符号),然后将一个双引号替换为两个双引号,最后将特殊字符再次替换为两个双引号。

如果您不想在单个regexp gsub中进行替换,可以先将两个双引号替换为其他符号(例如,永不出现的utf-8符号),然后将一个双引号替换为两个双引号,最后将特殊字符再次替换为两个双引号。

如果您不想在单个regexp gsub中进行替换,可以先将两个双引号替换为其他符号(例如,永不出现的utf-8符号),然后将一个双引号替换为两个双引号,最后将特殊字符再次替换为两个双引号。

如果您不想在单个regexp gsub中进行替换,可以先将两个双引号替换为其他符号(例如,永不出现的utf-8符号),然后将一个双引号替换为两个双引号,最后将特殊字符再次替换为两个双引号。

如果我理解正确,您希望将
“…”
的任何实例替换为
“…”“
,但前提是,
两边都有一个双引号。您的一些值的两边已经有两个双引号,应该保持不变。例如,
“未知”
应保持为
“未知”
,而不应变为
“未知”

我假设您的“示例行”是一个单字符串,也就是说,它应该用引号括起来以声明为字符串,就像我在代码中做的那样——我用单引号括起来以避免大量双引号转义

line = '"1",""Unknown"","""","""",""Unknown"","""",""Unknown"","""","False","1077.36","132","8.1618","97","483","1","51","2010-06-17 20:58:00","2013-12-04 12:05:00","101",""White Oak"","0","0","1","1"'
line.gsub(/(?<!")"(?!")/, '""')
我使用的正则表达式使用负的lookbehind和lookahead来识别那些没有前面或后面有另一个双引号的双引号,并用两个双引号替换它们

line = '"1",""Unknown"","""","""",""Unknown"","""",""Unknown"","""","False","1077.36","132","8.1618","97","483","1","51","2010-06-17 20:58:00","2013-12-04 12:05:00","101",""White Oak"","0","0","1","1"'
line.gsub(/(?<!")"(?!")/, '""')
因此,要将其应用于代码,只需将
文件替换为。将
行写入:

File.write(file_name, text.gsub(/(?<!")"(?!")/, '""'))

File.write(文件名,text.gsub(/(?如果我理解正确,您希望将
“…
的任何实例替换为
”…)
,但仅当
两边都有一个双引号时。您的某些值两边已经有两个双引号,应保持不变。例如,
“未知”
应保持
“未知”
,而不应变为
“未知”

我假设您的“示例行”是一个单字符串,也就是说,它应该用引号括起来以声明为字符串,就像我在代码中做的那样——我用单引号括起来以避免大量双引号转义

line = '"1",""Unknown"","""","""",""Unknown"","""",""Unknown"","""","False","1077.36","132","8.1618","97","483","1","51","2010-06-17 20:58:00","2013-12-04 12:05:00","101",""White Oak"","0","0","1","1"'
line.gsub(/(?<!")"(?!")/, '""')
我使用的正则表达式使用负的lookbehind和lookahead来识别那些没有前面或后面有另一个双引号的双引号,并用两个双引号替换它们

line = '"1",""Unknown"","""","""",""Unknown"","""",""Unknown"","""","False","1077.36","132","8.1618","97","483","1","51","2010-06-17 20:58:00","2013-12-04 12:05:00","101",""White Oak"","0","0","1","1"'
line.gsub(/(?<!")"(?!")/, '""')
因此,要将其应用于代码,只需将
文件替换为。将
行写入:

File.write(file_name, text.gsub(/(?<!")"(?!")/, '""'))

File.write(文件名,text.gsub(/(?如果我理解正确,您希望将
“…
的任何实例替换为
”…)
,但仅当
两边都有一个双引号时。您的某些值两边已经有两个双引号,应保持不变。例如,
“未知”
应保持
“未知”
,而不应变为
“未知”

我假设您的“示例行”是一个单字符串,也就是说,它应该用引号括起来以声明为字符串,就像我在代码中做的那样——我用单引号括起来以避免大量双引号转义

line = '"1",""Unknown"","""","""",""Unknown"","""",""Unknown"","""","False","1077.36","132","8.1618","97","483","1","51","2010-06-17 20:58:00","2013-12-04 12:05:00","101",""White Oak"","0","0","1","1"'
line.gsub(/(?<!")"(?!")/, '""')
我使用的正则表达式使用负的lookbehind和lookahead来识别那些没有前面或后面有另一个双引号的双引号,并用两个双引号替换它们

line = '"1",""Unknown"","""","""",""Unknown"","""",""Unknown"","""","False","1077.36","132","8.1618","97","483","1","51","2010-06-17 20:58:00","2013-12-04 12:05:00","101",""White Oak"","0","0","1","1"'
line.gsub(/(?<!")"(?!")/, '""')
因此,要将其应用于代码,只需将
文件替换为。将
行写入:

File.write(file_name, text.gsub(/(?<!")"(?!")/, '""'))

File.write(文件名,text.gsub(/(?如果我理解正确,您希望将
“…
的任何实例替换为
”…)
,但仅当
两边都有一个双引号时。您的某些值两边已经有两个双引号,应保持不变。例如,
“未知”
应保持
“未知”
,而不应变为
“未知”

我假设您的“示例行”是一个单字符串,也就是说,它应该用引号括起来以声明为字符串,就像我在代码中做的那样——我用单引号括起来以避免大量双引号转义

line = '"1",""Unknown"","""","""",""Unknown"","""",""Unknown"","""","False","1077.36","132","8.1618","97","483","1","51","2010-06-17 20:58:00","2013-12-04 12:05:00","101",""White Oak"","0","0","1","1"'
line.gsub(/(?<!")"(?!")/, '""')
我使用的正则表达式使用负的lookbehind和lookahead来识别那些没有前面或后面有另一个双引号的双引号,并用两个双引号替换它们

line = '"1",""Unknown"","""","""",""Unknown"","""",""Unknown"","""","False","1077.36","132","8.1618","97","483","1","51","2010-06-17 20:58:00","2013-12-04 12:05:00","101",""White Oak"","0","0","1","1"'
line.gsub(/(?<!")"(?!")/, '""')
因此,要将其应用于代码,只需将
文件替换为。将
行写入:

File.write(file_name, text.gsub(/(?<!")"(?!")/, '""'))

File.write(文件名,text.gsub(/)如果您不确定正则表达式是否适用于您