如何用正则表达式拆分文本与数字并添加分隔符?
用正则表达式就能实现这个格式转换
核心思路
你的原始字符串是「队伍名+赔率+队伍名+赔率」(部分包含Draw选项)的连续拼接,只要在队伍名与赔率的衔接处、赔率与下一个队伍名(或Draw)的衔接处插入, 分隔符就行。
具体操作方案
可以分两步替换(分步更直观,也可以合并成一步):
第一步:分隔队伍名和赔率
- 查找正则:
([^\d])(?=\d) - 替换为:
$1,
作用:匹配队伍名的最后一个非数字字符,在它和后面的赔率数字之间插入,。
第二步:分隔赔率和下一个队伍名(或Draw)
- 查找正则:
(\d)(?=[^\d]) - 替换为:
$1,
作用:匹配赔率的最后一个数字,在它和后面的队伍名(或Draw)开头字符之间插入,。
效果验证
拿你的示例行测试:
原始行:Australia1.09Draw14.00West Indies13.00
第一步替换后:Australia, 1.09Draw, 14.00West Indies, 13.00
第二步替换后:Australia, 1.09, Draw, 14.00, West Indies, 13.00,完全符合你要的输出。
其他行比如Abu Dhabi1.90Morrisville Samp Army1.90,两步替换后会变成Abu Dhabi, 1.90, Morrisville Samp Army, 1.90,和你的示例格式一致(如果要完全复刻示例里的「Abu Dhabi , 1.90」这种带空格的分隔,把第一步的替换改成$1 , 就行)。
一步替换的简化方案
如果用VS Code、Notepad++这类支持复杂正则的工具,还可以把两步合并成一次替换:
- 查找正则:
([^\d])(?=\d)|(\d)(?=[^\d]) - 替换为:
$1$2,
内容的提问来源于stack exchange,提问作者mrtapan19
相关产品推荐
相关产品推荐

