You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则表达式将任意长度千分位数字中的点替换为XYZ

实现思路

核心逻辑不需要提前固定分组,利用re.sub支持传入回调函数的特性,分两步完成即可:

  1. 先精准匹配所有符合千分位规则的数字串,自动过滤掉100.00这类非千分位的带点数字
  2. 对每一个匹配到的千分位数字单独处理,直接替换内部的.为XYZ即可
千分位数字匹配规则

匹配规则的正则表达式为:r'\b\d{1,3}(?:\.\d{3})+\b',规则说明:

  • \b 单词边界,避免匹配到夹杂在其他字符中的不完整数字
  • \d{1,3} 匹配开头1~3位数字,符合千分位的开头规则
  • (?:\.\d{3})+ 非捕获分组,匹配1次及以上「点+3位数字」的组合,天然过滤点后位数不等于3的非千分位场景
代码实现
import re

def replace_thousand_dot(text):
    # 千分位数字匹配正则
    thousand_pattern = r'\b\d{1,3}(?:\.\d{3})+\b'
    # 替换回调:对匹配到的数字单独替换点为XYZ
    def replace_dot(match_obj):
        return match_obj.group().replace('.', 'XYZ')
    return re.sub(thousand_pattern, replace_dot, text)

# 测试示例
test_str = "The dog has 12.345 bones, valid nums: 1、456、1.000、34.234.233, invalid num: 100.00"
print(replace_thousand_dot(test_str))
输出结果
The dog has 12XYZ345 bones, valid nums: 1、456、1XYZ000、34XYZ234XYZ233, invalid num: 100.00

内容的提问来源于stack exchange,提问作者Marcel Braasch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 12:27:00