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

如何组合正则表达式实现非单词与上标字符的下划线替换?

解决方案

你之前的问题出在\W只匹配ASCII范围内的非单词字符,没法覆盖那些Unicode上标字符,而且你尝试的组合正则逻辑不对——应该直接把两类字符合并到同一个匹配集合里,逐个替换为下划线。

可用的合并正则

直接把\W和你指定的上标字符放进同一个字符类,用re.sub全局替换:

import re

col_name = "Energy (kWh/m²)"
processed = re.sub(r'[\W²³¹⁰ⁱ⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾ⁿ]', '_', col_name)
print(processed)  # 输出: Energy__kWh_m__

为啥之前的组合正则没用?

你写的([²³¹⁰ⁱ⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾ⁿ]).*(\W)是在匹配「一个上标字符 + 任意内容 + 一个非单词字符」的整段,不是逐个匹配每个要替换的字符,自然只能替换部分内容。现在这个正则会单独匹配每个非单词字符或上标字符,把它们全换成下划线,完全符合你的需求。

内容的提问来源于stack exchange,提问作者J.Doe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 21:05:24