繁体   English   中英

正则表达式替换在引号之间输入

[英]Regex replace enters between quotes

如何替换文本文件中两个引号之间的所有输入。 第一个引号始终以制表符开头,或者它是行中的第一个字符(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正则表达式替换括号之间的空格 )非常相似,但正则表达式建议我的情况不可用。

使用Javascript替换,您可以使用函数作为替换

 var str = 'foo \\n"a\\n" bar\\n'; str = str.replace(/"[^"]+"/g, function(m) { return m.replace(/\\n/g, ' '); }); console.log(str); 

正则表达式"[^"]+"将引用的东西与之间的一个或多个引号相匹配。

根据需要添加选项卡或启动到模式等条件: (?:\\t|^)"[^"]+"

\n(?=[^"]*"(?:[^"]*"[^"]*")*[^"]*$)

您可以使用它并替换为empty string

见演示

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM