Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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
Regex 当反斜杠不在文件中时,将其转义到文件中的位置';不要总是显得不可逃避_Regex_Csv_Sed_Escaping_Weka - Fatal编程技术网

Regex 当反斜杠不在文件中时,将其转义到文件中的位置';不要总是显得不可逃避

Regex 当反斜杠不在文件中时,将其转义到文件中的位置';不要总是显得不可逃避,regex,csv,sed,escaping,weka,Regex,Csv,Sed,Escaping,Weka,我遇到了一个特殊的情况,我正试图将一个CSV文件导入到Weka中,但我遇到了一个问题,Weka显然非常糟糕,无法以卫生的方式处理字符串 我已经在使用sed删除所有非ASCII字符,但现在我遇到了处理反斜杠的问题。我的输入在某些字段中包含转义反斜杠,在其他字段中包含非转义反斜杠(Weka无法正确处理) 我需要的是一个正则表达式,它将查找不在反斜杠前面或后面的反斜杠,并添加第二个反斜杠。我很难让语法正常工作,不知道是否有人能帮我。试试下面的-sed的/\\\/@/g;s/\\/\\\\\\\/g;s

我遇到了一个特殊的情况,我正试图将一个CSV文件导入到Weka中,但我遇到了一个问题,Weka显然非常糟糕,无法以卫生的方式处理字符串

我已经在使用sed删除所有非ASCII字符,但现在我遇到了处理反斜杠的问题。我的输入在某些字段中包含转义反斜杠,在其他字段中包含非转义反斜杠(Weka无法正确处理)


我需要的是一个正则表达式,它将查找不在反斜杠前面或后面的反斜杠,并添加第二个反斜杠。我很难让语法正常工作,不知道是否有人能帮我。

试试下面的-
sed的/\\\/@/g;s/\\/\\\\\\\/g;s/@@/\\\\/g'

它首先用标记替换转义反斜杠,转义单个反斜杠,并将标记更改回转义反斜杠

选择文件中不存在的标记

echo 'asdfj\lasdf\\asldf\oweur\\lasjd;lf\\lasjfl\asdfsdf' | \
  sed 's/\\\\/@@_@/g; s/\\/\\\\/g; s/@@_@/\\\\/g'
结果:
asdfj\\lasdf\\asldf\\oweur\\lasjd;lf\\lasjfl\\asdfsdf


另一个选项-
sed的/\([^\]\)\(\\\)\([^\\]\)/\1\3/g'

请粘贴您正在处理的文本或字符串的一部分好吗?第一个解决方案可能会得到改进,以避免字符串
@
可能被错误替换为:
s/\\n/g;s/\\/&&/g;s/\n/\\\/g'
第二种解决方案不适用于单个
\`可能是行中的第一个或最后一个字符的边缘情况
sed-r的/(^\\\]\\([^\\]\$)/\1\2/g'`也迎合了这些需求。