含逗号产品名的数据库导出产品数据正则分割技术问询
解决方案
方法1:替换分隔符(推荐)
你需要定位那些真正作为产品分隔符的逗号——也就是后面紧跟[5-9位数字]:的逗号。用以下正则表达式匹配这些逗号,然后替换为换行符即可:
,(?=[0-9]{5,9}:)
- 解释:
,:匹配目标逗号(?=[0-9]{5,9}:):正向预查,确保逗号后面是你的产品编号(5-9位数字)加冒号,也就是下一个产品的开头
把这个正则代入替换工具(比如VS Code查找替换、Notepad++,或代码中的replace方法),替换为换行符(\n或\r\n,根据系统选择),就能得到目标格式。
方法2:直接提取所有产品条目
如果你想直接匹配出每个完整的产品内容,可使用非贪婪模式的正则:
[0-9]{5,9}:.*?(?=,[0-9]{5,9}:|$)
- 解释:
[0-9]{5,9}::匹配产品编号开头.*?:非贪婪匹配任意内容(包括产品名称里的逗号)(?=,[0-9]{5,9}:|$):正向预查,直到遇到下一个产品的分隔逗号+编号,或者字符串结尾
用这个正则可以一次性提取所有产品条目,再逐个输出即可。
测试验证
以你的混乱数据为例:
输入:
13371337:Bat,TH,Li-Met,Blub,9.5V,370mAHr,1/2_AA-Cell,50pcs,13351234:Radio - Antenna 2.4 GHz AB/C midi (10p),15642345:Board SMB - Some Magic Board,95653345:Board SMK 6 - Some Magic Knobs - Mod6,56735632:Control Unit Z65 - Mod9
用方法1替换后,输出结果完全符合你的要求:
13371337:Bat,TH,Li-Met,Blub,9.5V,370mAHr,1/2_AA-Cell,50pcs 13351234:Radio - Antenna 2.4 GHz AB/C midi (10p) 15642345:Board SMB - Some Magic Board 95653345:Board SMK 6 - Some Magic Knobs - Mod6 56735632:Control Unit Z65 - Mod9
内容的提问来源于stack exchange,提问作者Aptivskorb
相关产品推荐
相关产品推荐

