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

Python中如何编写正则表达式提取特定下划线分隔的单词?

解决方案:符合要求的正则表达式

直接使用以下正则表达式即可提取目标内容:

import re

text = "i.am - M_o_h_a_m_m_e_d - and - _1_5_y_o - name - moh_mmed - 2_8_j - i___a_m"
result = re.findall(r'(?:[a-zA-Z]|_\d)(?:_+[a-zA-Z0-9])*', text)
print(result)

运行后输出与期望一致:

['M_o_h_a_m_m_e_d','_1_5_y_o','i___a_m']

正则规则详解

  • (?:[a-zA-Z]|_\d):匹配单词的起始部分,二选一:
    • [a-zA-Z]:单个大小写英文字母,对应以字母开头的目标单词(如M_o_h_a_m_m_e_d、i___a_m)
    • _\d:下划线加单个数字,对应数字开头但必须前置下划线的目标单词(如_1_5_y_o)
  • (?:_+[a-zA-Z0-9])*:匹配后续重复片段:
    • _+:允许一个或多个连续下划线(兼容i___a_m这类多下划线连接的情况)
    • [a-zA-Z0-9]:单个字母或数字,确保非下划线部分都是单个字符
    • *:该片段可重复0次或多次,覆盖单词后续所有合法组合

为什么其他内容不会被匹配

  • moh_mmed:存在连续字母段(moh、mmed),不符合“非下划线部分为单个字符”的要求
  • 2_8_j:数字开头但无前置下划线,不满足起始规则
  • i.am、and、name:要么包含非法字符(.),要么没有下划线分隔,均不匹配规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 02:57:51