Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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
Javascript Regex replace在引号之间输入_Javascript_Regex - Fatal编程技术网

Javascript Regex replace在引号之间输入

Javascript Regex replace在引号之间输入,javascript,regex,Javascript,Regex,如何替换文本文件中两个引号之间的所有输入。第一个引号前面总是有一个制表符,或者它是行中的第一个字符(csv文件)。我尝试了下面的正则表达式 /(\t"|^")([^"]*)(\n)([^"]*")/gm 但是这个正则表达式只匹配两个引号之间的第一个回车,而不是全部 例如,以下文本: xx "xx xx xx" xx "xx" xx xx "xxx xxx xx" 应该成为 xx "xx xx xx" xx "xx" xx xx "xxx xxx xx" 我读了下面的帖子(

如何替换文本文件中两个引号之间的所有输入。第一个引号前面总是有一个制表符,或者它是行中的第一个字符(csv文件)。我尝试了下面的正则表达式

/(\t"|^")([^"]*)(\n)([^"]*")/gm
但是这个正则表达式只匹配两个引号之间的第一个回车,而不是全部

例如,以下文本:

xx "xx 
xx 
xx" 
xx 
"xx"
xx 
xx
"xxx xxx 
xx"
应该成为

xx "xx xx xx" 
xx 
"xx"
xx 
xx
"xxx xxx xx"
我读了下面的帖子(
)这非常相似,但正则表达式建议在我的情况下不可用。

使用Javascript替换即可

var str='foo\n“a\n”bar\n';
str=str.replace(/“[^”]+”/g,函数(m){
返回m.replace(/\n/g');
});
console.log(str);
您可以使用它并替换为
空字符串


这是什么语言?JavaScript?如果你有CSV文件,使用一个CSV解析器。一个正则表达式立即处理它会变得非常丑陋和缓慢。考虑一个多通道方法:1。提取所有引用的文本;2。在引用的文本中替换所有的<代码> \n < /代码>;3。用未修改的引用部分重新汇编非引用部分。@Tomalak我更新了问题,javascript很好。我使用的是csv解析器,但是这个解析器由于输入错误而出现错误。然后使用更好的解析器。例如,处理带引号的值和值中的换行符很好。不要使用正则表达式。这适用于小文件。不幸的是,我的文本文件很大e(50000多行)。对于这些文件,这个正则表达式需要很多步骤。这种方法与Abbondanza建议非常相似。这个想法很有趣,唯一的缺点是引号之间的所有数据都会被处理(还有引号之间的文本,没有输入)。有什么办法解决这个问题吗?@Nebu您可以修改模式,要求引号中至少有一个换行符
\n
,如下:(还需要
^
开始或
\t
之前)。您需要测试这是否会使输入速度大大加快。
\n(?=[^"]*"(?:[^"]*"[^"]*")*[^"]*$)
var re = /\n(?=[^"]*"(?:[^"]*"[^"]*")*[^"]*$)/g; 
var str = 'xx "xx \nxx \nxx" \nxx \n"xx"\nxx \nxx\n"xxx xxx \nxx"';
var subst = ''; 

var result = str.replace(re, subst);