如何将逗号分隔数字行的空格替换为换行?正则问题排查
原正则的问题分析及修正方案
原正则的核心问题
非贪婪匹配导致数字拆分错误
你的正则里.*?是最小匹配模式,它会找到第一个能让后续\h*,.*$(空格+逗号+剩余内容)成立的位置就停止。拿第一行\u042f 12,197,051举例,.*?会匹配到\u042f 12(因为后面刚好跟着,),把数字的前半部分和前缀文本绑在了一起,替换后自然就把完整的数字拆成了12和,197,051两部分。匹配条件过于局限
正则第三组要求空格后面必须跟逗号,这就导致最后一行里43,437,031 OVERWATE之间的空格因为后面是字母,不符合匹配条件,所以没被替换,最后一行只拆分了一次。
正确的正则方案
方案一:简单直接(适配你的输入场景)
直接匹配所有水平空格,替换为换行:
- Find What:
\h+ - Replace With:
\n
这个方案适合你的输入,因为所有空格都是用来分隔不同内容的,没有数字内部的空格需要保留。
方案二:精准匹配(避免误替换)
如果需要更精准,只替换不同内容块之间的空格,可以用分组匹配,循环替换直到没有匹配项:
- Find What:
(\S+)\h+(\S+) - Replace With:
\1\n\2
这个正则会匹配“非空内容块 + 空格 + 非空内容块”,每次替换一组,循环执行后就能把一行中的所有空格都换成换行。
内容的提问来源于stack exchange,提问作者Pubg Mobile
相关产品推荐
相关产品推荐

