正则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全部的非逗号字符 -
,\s*
:匹配一个逗号和任何尾随空格 -
([^,]*)
:捕获将作为元素2全部的非逗号字符 -
,\s*
:匹配一个逗号和任何尾随空格 -
'([^']*)'
:捕获单引号中的所有元素3的string -
\s*,\s*
:匹配一个逗号和所有的周围空格 - 忽略string的其余部分,没有更多的逗号被replace,我们只是想replace刚才读到的那一行