javascript - 使用哪个 - 递归查询或特定正则表达式

标签 javascript regex csv

我有一个 CSV 行,如下所示:

foo, bar, baz, "england, scotland, wales, ireland", sith

并且需要将其转换为

"foo", "bar", "baz", "england, scotland, wales, ireland", "sith"

我决定用“逗号”替换双引号之间的所有逗号,但是在双引号之间选择一个替换后,我在正则表达式中遇到了这样做的问题,因为在使用

replace(/(.+)(,)(.+)/g, "'comma'")

我取下一个子字符串

"england, scotland, wales'comma' ireland"

而不是

"england'comma' scotland'comma' wales'comma' ireland"

我不想使用具有更复杂结构的正则表达式,例如

/(.+)(,)(.+)(,)(.+)(,)(.+)/g

并且希望用逗号对单词进行分组,但无法为其选择正确的正则表达式,因此我使用递归子字符串搜索并在 for 循环中进行匹配。我做得对吗,或者有一个合适的正则表达式,但我还没有找到。谢谢。

最佳答案

您可以使用此模式:

var re = /"([^"]*)"|([^\s,][^,]*)/g;
var str = 'foo, bar, baz, "england, scotland, wales, ireland", sith';
var subst = '"$1$2"';

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

console.log(result);

关于javascript - 使用哪个 - 递归查询或特定正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26287228/

相关文章:

javascript - 将字符串解析为 DOM,ng-click 不起作用

javascript - 循环遍历在 it block 中创建的数组

python - Django 查询集中的正则表达式

python - pandas groupby 一次用于多个数据帧/文件

javascript - 这个算法的正式名称是什么?

javascript - Canvas 中的clearRect问题

JavaScript/jQuery - 从元素的 id 中获取一个整数

javascript 匹配双大括号内的希伯来语单词

Excel - 将以 Z 结尾的 ISO8601 日期转换为适合输入类型为 'timestamp with time zone' 的 Postgres 字段的格式

php - 在php中下载csv错误