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

Python中如何使用Regex过滤特定字符 保留字母间的连字符

正则调整方案

你原来的正则[0-9-][0-9]*存在的问题是把所有独立的-也纳入了匹配范围,没有区分-前后的字符类型,因此会误删字母之间的连接符。

调整后代码

import re

if 'business' in row.keys():
    # 基础匹配实现需求
    row['business'] = re.sub(r"\d+|(?<=\d)-(?=\d)", '', str(row['business']))
    # 可选:额外清理替换后产生的多余连续空格
    # row['business'] = re.sub(r"\s+", " ", re.sub(r"\d+|(?<=\d)-(?=\d)", '', str(row['business']))).strip()

正则逻辑说明

  • \d+:匹配所有连续的数字字符,直接替换为空
  • (?<=\d)-(?=\d):通过零宽断言匹配前后都紧邻数字的-符号:
    • (?<=\d)为正向回顾断言,要求-的前一个字符是数字
    • (?=\d)为正向先行断言,要求-的后一个字符是数字
    • 只有同时满足两个条件的-才会被匹配删除,字母之间的-不会被命中

测试效果

输入:"Non-Profit Organization management, 100-200 employees"
输出(加空格优化后):"Non-Profit Organization management, employees",完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:06:03