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

Python 3.7 re模块拆分含大写/下划线/连字符的拼接字符串问题

解决字符串拆分问题:去掉分隔符并拆分驼峰式单词

我来帮你搞定这个问题!你现在的代码之所以会留下_和-符号,是因为原正则只是在这些符号旁边插入了空格,但没有把符号本身去掉。咱们调整一下思路,直接把分隔符替换成空格,同时处理驼峰式的大小写拆分,就能得到想要的纯单词结果。

解决方案代码

import re

original_str = "person_firstName-Middle"
# 第一步:替换分隔符和拆分驼峰
processed_str = re.sub(r'[-_]|(?<=[a-z])(?=[A-Z])', ' ', original_str)
# 第二步:转小写(如果有连续空格可以额外处理,这里例子里不需要)
final_result = processed_str.lower()

print(final_result)  # 输出: person first name middle

为什么原代码不行?

你原来的正则r'((?<=[\_\-a-z])[\_\-A-Z]|(?<!\A)[\_\-A-Z](?=[\_\-a-z]))'的逻辑是在特定位置插入空格,但它会把_和-这些符号保留下来,所以才会出现person _first name -middle这种带符号的结果——它只是在符号前后加了空格,并没有删掉符号本身。

新正则的工作原理

咱们用的新正则r'[-_]|(?<=[a-z])(?=[A-Z])'匹配两种需要拆分的场景:

  1. [-_]:直接匹配下划线和连字符,把它们替换成空格,相当于直接删掉分隔符并拆分单词
  2. (?<=[a-z])(?=[A-Z]):这是一对零宽断言,匹配「小写字母后面紧跟大写字母」的位置(比如firstName里t和N之间的位置),在这个位置插入空格,就能把驼峰式的单词拆分开

如果你的字符串里可能出现连续的分隔符(比如person__first-name),可以再加一步合并多余空格:

final_result = re.sub(r'\s+', ' ', processed_str).lower().strip()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:46:39