正则表达式:用不在引号内的制表符替换每个逗号
Regex: Replace every Comma with Tab Not within quotes
我有一个庞大的条目数据集,如下所示:
(21, 2, '23.5R25 ETADT', 'description, with a comma'),
(22, 1, '26.5R25 ETADT', 'Description without a comma'),
(23, 5, '20.5R20.5', 'Another description with ; semicolumn'),
我正在尝试用制表符替换列表中的每个逗号。排除单引号内的逗号。也不包括结尾逗号。
所以示例条目应该变成:
(21[TAB]2[TAB]'23.5R25 ETADT'[TAB]'description, with a comma'),
(22[TAB]1[TAB]'26.5R25 ETADT'[TAB]'Description without a comma'),
(23[TAB]5[TAB]'20.5R20.5'[TAB]'Another description with ; semicolumn'),
我有大约 6000 行这样的数据。
这些选项卡允许我告诉 Excel 将这些条目的元素导入不同的列。
我试过的正则表达式是这样的:[ ]*,[ ]*
但是这个正则表达式选择了所有逗号,甚至是单引号内的逗号。
看起来你的每行括号内都有 4 个元素。而且看起来只有最后 2 个元素使用单引号。如果可以做出这些假设,我已经在 Notepad++ 中测试了以下内容:
- "Find what :"
^\(([^,]*),\s*([^,]*),\s*'([^']*)'\s*,\s*
- "Replace with :"
\(\t\t''\t
编辑:
搜索正则表达式依赖于 4 列模型,只有最后两个元素有单引号。视觉上这是它的工作原理:
^\(
:查找左括号
([^,]*)
:捕获所有元素 1 的非逗号字符
,\s*
:匹配逗号和任何尾随空格
([^,]*)
:捕获非逗号字符,这将是元素 2 的全部
,\s*
:匹配逗号和任何尾随空格
'([^']*)'
:捕获单引号中的字符串,这将是所有元素 3
\s*,\s*
:匹配一个逗号及其周围的所有空格
- 忽略字符串的其余部分,没有更多的逗号要替换我们只想替换我们刚刚读入的行的一部分
我有一个庞大的条目数据集,如下所示:
(21, 2, '23.5R25 ETADT', 'description, with a comma'),
(22, 1, '26.5R25 ETADT', 'Description without a comma'),
(23, 5, '20.5R20.5', 'Another description with ; semicolumn'),
我正在尝试用制表符替换列表中的每个逗号。排除单引号内的逗号。也不包括结尾逗号。
所以示例条目应该变成:
(21[TAB]2[TAB]'23.5R25 ETADT'[TAB]'description, with a comma'),
(22[TAB]1[TAB]'26.5R25 ETADT'[TAB]'Description without a comma'),
(23[TAB]5[TAB]'20.5R20.5'[TAB]'Another description with ; semicolumn'),
我有大约 6000 行这样的数据。 这些选项卡允许我告诉 Excel 将这些条目的元素导入不同的列。
我试过的正则表达式是这样的:[ ]*,[ ]*
但是这个正则表达式选择了所有逗号,甚至是单引号内的逗号。
看起来你的每行括号内都有 4 个元素。而且看起来只有最后 2 个元素使用单引号。如果可以做出这些假设,我已经在 Notepad++ 中测试了以下内容:
- "Find what :"
^\(([^,]*),\s*([^,]*),\s*'([^']*)'\s*,\s*
- "Replace with :"
\(\t\t''\t
编辑:
搜索正则表达式依赖于 4 列模型,只有最后两个元素有单引号。视觉上这是它的工作原理:
^\(
:查找左括号([^,]*)
:捕获所有元素 1 的非逗号字符
,\s*
:匹配逗号和任何尾随空格([^,]*)
:捕获非逗号字符,这将是元素 2 的全部
,\s*
:匹配逗号和任何尾随空格'([^']*)'
:捕获单引号中的字符串,这将是所有元素 3\s*,\s*
:匹配一个逗号及其周围的所有空格- 忽略字符串的其余部分,没有更多的逗号要替换我们只想替换我们刚刚读入的行的一部分