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

正则表达式提取含大写/数字/特殊字符的连续单词序列问题

解决方案

问题分析

当前正则仅能匹配单个符合条件的单词,无法将连续的符合条件单词合并为一个序列,这才导致DDD和Code被拆分。需要调整正则逻辑,匹配连续的、每个都包含目标元素的单词组成的完整序列。

修正后的实现代码

import re

text = 'aBC has been contacting Maria and James where their DDD Code for system DB-54:ABB is 12343-4.'
# 匹配连续的符合条件单词序列
pattern = r'\b(?:\w*[A-Z0-9:-]\w*(?:\s+))*\w*[A-Z0-9:-]\w*\b'
raw_result = re.findall(pattern, text)
# 清理结果中的多余空格和末尾标点
cleaned_result = [item.strip(' .,!') for item in raw_result]

# 输出格式化结果
for item in cleaned_result:
    print(f'- {item}')

正则逻辑说明

  • \b:匹配单词边界,避免部分匹配(比如不会从中间截取单词)
  • \w*[A-Z0-9:-]\w*:匹配单个符合条件的单词——要求单词中至少包含一个大写字母、数字、冒号或连字符
  • (?:\w*[A-Z0-9:-]\w*(?:\s+))*:匹配0次或多次「符合条件的单词 + 空格」结构,实现连续单词的合并
  • 整个表达式会自动将连续的符合条件单词拼接成一个完整序列

最终输出结果

  • aBC
  • Maria
  • James
  • DDD Code
  • DB-54:ABB
  • 12343-4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:01:07