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

如何使用正则删除两个分隔符之间的数字?

特殊分隔符内数字的精准删除方案

问题背景

有一段包含特殊分隔符的文本,需要仅删除该分隔符之间的数字,保留分隔符内的其他内容以及分隔符外的所有内容(包括正常数字)。

原始无效数据:

trueText = ' 23  Wolkenvelden en   lokaal wat regen. In  de ochtend op  steeds meer  plaatsen droog en  24 zon. In de avond   kans op onweer,met   name in Zeeland.   22      20 23   = max. temp.  vandaag   '

之前尝试的代码问题:

trueText = re.sub('[^]+', ' ', trueText)

这段代码会直接删除之间的所有内容,不符合仅删除数字的需求。

解决方案

方案一:精准匹配分隔符内的数字并删除

利用正则的正向/反向预查定位分隔符范围,配合回调函数删除其中的数字:

import re

trueText = ' 23  Wolkenvelden en   lokaal wat regen. In  de ochtend op  steeds meer  plaatsen droog en  24 zon. In de avond   kans op onweer,met   name in Zeeland.   22      20 23   = max. temp.  vandaag   '

# 仅删除之间的数字
trueText = re.sub(r'(?<=)[^]*?(\d+)[^]*?(?=)', lambda m: m.group(0).replace(m.group(1), ''), trueText)

print(trueText)

逻辑说明:

  • (?<=):反向预查,确保当前位置前是分隔符
  • [^]*?(\d+)[^]*?(?=):匹配分隔符内包含数字的片段,捕获数字为分组1
  • 回调函数将匹配到的片段中的数字(分组1)替换为空,保留其他内容

方案二:先匹配分隔符内所有内容,再批量删除其中数字

先定位所有之间的内容,再在每个匹配结果中删除数字:

import re

trueText = ' 23  Wolkenvelden en   lokaal wat regen. In  de ochtend op  steeds meer  plaatsen droog en  24 zon. In de avond   kans op onweer,met   name in Zeeland.   22      20 23   = max. temp.  vandaag   '

def remove_digits_in_sep(match):
    # 删除匹配到的分隔符内的所有数字
    return re.sub(r'\d+', '', match.group(0))

trueText = re.sub(r'[^]+', remove_digits_in_sep, trueText)

print(trueText)

逻辑说明:

  • [^]+:匹配所有被包裹的内容
  • 回调函数remove_digits_in_sep将每个匹配结果中的数字全部删除,再替换回原文本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 00:09:53