我有一个巨大的条目数据集,如下所示:
(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 个元素。看起来只有最后两个元素使用单引号。如果可以做出这些假设,我已经在 Notepad++ 中测试了以下内容:
- “查找内容:”
^\(([^,]*),\s*([^,]*),\s*'([^']*)'\s*,\s*
- “替换为:”
\(\1\t\2\t'\3'\t
编辑:
搜索正则表达式依赖于 4 列模型,只有最后两个元素带有单引号。从视觉上看,它是这样工作的:
^\(
:查找左括号([^,]*)
:捕获将成为元素 1 全部的非逗号字符,\s*
:匹配逗号和任何尾随空格([^,]*)
:捕获将成为元素 2 全部的非逗号字符,\s*
:匹配逗号和任何尾随空格'([^']*)'
:捕获单引号中的字符串,该字符串将成为元素 3 的全部\s*,\s*
:匹配逗号及其周围的空格- 忽略字符串的其余部分,没有更多的逗号需要替换,我们只想替换刚刚读入的行的部分内容
关于excel - 正则表达式:用制表符替换每个逗号不在引号内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33411578/