You need to enable JavaScript to run this app. Python使用正则为逗号、横杠等符号前后加空格且排除特定格式
优惠活动
大模型
产品
解决方案
定价
更多

Python使用正则为逗号、横杠等符号前后加空格且排除特定格式

原有代码的问题

  1. 正则语法逻辑错误:你在捕获组和断言之间加入了行首匹配符^,这个符号只用于匹配字符串起始位置,放在此处直接导致后续断言完全失效。
  2. 断言规则设计错误:你尝试在匹配到所有符号后,再判断符号前后是否存在C-GOOD这类完整字符串,而没有直接判断当前匹配的符号本身是否属于例外场景,所以只能得到全匹配或全不匹配的结果。
  3. 规则设计冗余:.、,本身不会出现在C-GOOD这类例外内容中,不需要和-放在同一条正则里处理,拆分处理可以大幅降低正则复杂度。

解决方案

你的例外规则核心是:仅前后均为大写英文字母的横杠不需要加空格,其余的.、,、-都需要前后加空格,按这个逻辑写正则即可。

可运行代码

import re

def format_text(text):
    # 处理.和,,统一前后加空格
    text = re.sub(r'([.,])', r' \1 ', text)
    # 处理横杠:排除前后均为大写字母的场景,其余横杠前后加空格
    text = re.sub(r'(?<![A-Z])-(?![A-Z])', r' - ', text)
    # 若需要合并多余连续空格可取消注释下一行
    # text = re.sub(r'\s+', ' ', text)
    return text

# 测试用例
print(format_text("hello-goodbye       C-GOOD"))
print(format_text("100.89   D-FARM"))

运行结果

hello - goodbye       C-GOOD
100 . 89   D-FARM

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 21:30:05