gpt4 book ai didi

javascript - 正则表达式仅匹配较大字符串中引号中的新行

转载 作者:行者123 更新时间:2023-12-03 02:18:28 26 4
gpt4 key购买 nike

我有一个很大的 CSV 文件,我想找到一个能够删除引号内所有新行的正则表达式。

a123,b123,c123,d123,
a123,b123,c123,d123,
a123,b123,"c
123",d123,
a123,b123,c123,d123,
"a
123",b123,c123,d123,
a123,b123,c123,"d
1
2
3",
a123,b123,c123,d123,
a123,b123,c123,d123,
a123,b123,c123,d123

在此示例中,我有多行,其中引号中有一个新行,甚至有一行有多个新行。我需要删除所有这些新行,前提是它们在引号内。这可能吗?

预期结果:

a123,b123,c123,d123,
a123,b123,c123,d123,
a123,b123,"c123",d123,
a123,b123,c123,d123,
"a123",b123,c123,d123,
a123,b123,c123,"d123",
a123,b123,c123,d123,
a123,b123,c123,d123,
a123,b123,c123,d123

Node.js 代码:

var request = require('request')

request.post({
url: '...',
}, function (error, response, body) {
var formatted = body.replace(/.../g, '<#>')
})

最佳答案

您可以使用正则表达式来匹配引号之间的内容,然后迭代这些匹配项并将每个匹配项替换为不带换行符的版本...

let str = `a123,b123,c123,d123,
a123,b123,c123,d123,
a123,b123,"c
123",d123,
a123,b123,c123,d123,
"a
123",b123,c123,d123,
a123,b123,c123,"d
1
2
3",
a123,b123,c123,d123,
a123,b123,c123,d123,
a123,b123,c123,d123`;

const matches = str.match(/"[^"]+"/g);

matches.forEach(m => str = str.replace(m, m.replace(/[\r\n]/g, "")));

console.log(str);

chrome 控制台输出:

a123,b123,c123,d123,
a123,b123,c123,d123,
a123,b123,"c123",d123,
a123,b123,c123,d123,
"a123",b123,c123,d123,
a123,b123,c123,"d123",
a123,b123,c123,d123,
a123,b123,c123,d123,
a123,b123,c123,d123

您的 Node.js 代码将如下所示:

var request = require('request')

request.post({
url: '...',
}, function (error, response, body) {
let formatted = body;
const matches = body.match(/"[^"]+"/g);
matches.forEach(m => formatted = formatted.replace(m, m.replace(/[\r\n]/g, "")));
console.log(formatted);
})

关于javascript - 正则表达式仅匹配较大字符串中引号中的新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49261734/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com