正则expression式:用逗号replace每个逗号不要在引号内

我有一个像这样的条目庞大的数据集:

(21,2,'23.5R25 ETADT','描述,用逗号'),
(22,1,'26 .5R25 ETADT','没有逗号的描述'),
(23,5,20.5R20.5','另一种描述,半圆柱'),

我试图用选项卡来replace列表中的每个逗号。 不包括单引号内的逗号。 也不包括结尾的逗号。

所以例子条目应该成为:

(21 [TAB] 2 [TAB] '23.5R25ETADT'[TAB]'的描述,用逗号'),
(22 [TAB] 1 [TAB]'26 .5R25 ETADT'[TAB]'不带逗号的描述'),
(23 [TAB] 5 [TAB] '20.5R20.5'[TAB]'具有;半圆柱'的另一种描述)

我有这样的6000行数据。 这些选项卡允许我告诉Excel将这些条目的元素导入到不同的列中。

我试过的正则expression式是这样的: [ ]*,[ ]*但是这个正则expression式select所有的逗号,甚至是单引号内的逗号。

看起来你的每一行在括号内都有4个元素。 看起来只有最后2个元素使用单引号。 如果可以做出这些假设,我已经在Notepad ++中testing了以下内容:

  • “查找什么:” ^\(([^,]*),\s*([^,]*),\s*'([^']*)'\s*,\s*
  • “replace为:” \(\1\t\2\t'\3'\t

编辑:

search正则expression式依赖于4列模型,只有最后两个元素有单引号。 在视觉上,这是如何工作的:

正则表达式可视化

  1. ^\( :查找左括号
  2. ([^,]*) :捕获将作为元素1全部的非逗号字符
  3. ,\s* :匹配一个逗号和任何尾随空格
  4. ([^,]*) :捕获将作为元素2全部的非逗号字符
  5. ,\s* :匹配一个逗号和任何尾随空格
  6. '([^']*)' :捕获单引号中的所有元素3的string
  7. \s*,\s* :匹配一个逗号和所有的周围空格
  8. 忽略string的其余部分,没有更多的逗号被replace,我们只是想replace刚才读到的那一行
Interesting Posts