正则表达式:仅查找“不是分隔符

时间:2017-02-14 09:58:43

标签: regex csv

我正在尝试构建一个正则表达式,该正则表达式找到CSV文件中的所有"(由;分隔),而不是文本分隔符。所以规格是:

  1. "不在行的开头
  2. "不在;
  3. 之前
  4. "后面没有;
  5. "不在一行
  6. 我使用node.js,所以没有可能的背后。

    这是一个用于测试的示例行:

    123123;"This is a text. These "quotes" should be matched, this one not";"text";4125;"Also no match"

    提前致谢!

2 个答案:

答案 0 :(得分:1)

我只是这样做:



var s = '123123;"This is a text. These "quotes" should be matched, this one not";"text";4125;"Also no match"';
res = s.replace(/([^;])"([^;])/g, '$1$2');
console.log(res);




答案 1 :(得分:0)

您可以使用以下正则表达式:

(?<!^|;)"(?!;|$)
  • 它使用前瞻和后瞻,这意味着,它不会在JavaScript中工作
  • (?<!^|;)前面的标记不能是^(字符串的开头)和;
  • (?!;|$)后续令牌不能是$(字符串结尾)和;
  • 使用全局/g和多行标记/m使其正常工作

以下是一个实例:https://regex101.com/r/bqdQCB/2

如果您不想使用多行标记/m,则可以使用以下正则表达式(也使用换行符):

(?<!^|;|\r\n|\n)"(?!;|$|\r\n|\n)
  • \r\n是Windows换行符,\n是UNIX换行符

以下是一个实例:https://regex101.com/r/bqdQCB/3