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

如何用Python正则提取AK/BK开头且同时含字母数字的指定格式字符串

Python正则提取规则调整方案

你的原有正则仅限制了可匹配的字符范围,没有增加「后续内容必须同时包含字母和数字」的校验逻辑,因此会出现仅含字母的错误匹配结果。

调整后的正则规则

pattern = r'(?:AK|BK)(?=.*\d)(?=.*[a-zA-Z])[a-zA-Z0-9/-]+'

各部分逻辑说明:

  • (?:AK|BK):非捕获分组,匹配字符串以AK或BK开头,不会额外占用分组序号影响re.findall的返回结果
  • (?=.*\d):零宽正向预查,要求AK/BK后续的内容中至少包含1个数字
  • (?=.*[a-zA-Z]):零宽正向预查,要求AK/BK后续的内容中至少包含1个字母
  • [a-zA-Z0-9/-]+:匹配允许出现的所有字符(字母、数字、-、/),此处将-放在字符集末尾避免被识别为范围连接符

完整实现代码

import re

document_text="""
This is the organization..this is the address. 
some information
AK3418CPMP
AKBN
BKCPU
BK123-XY/9
lot of other information down
"""

pattern = r'(?:AK|BK)(?=.*\d)(?=.*[a-zA-Z])[a-zA-Z0-9/-]+'
res_list = re.findall(pattern, document_text)
print(res_list)
# 输出结果:['AK3418CPMP', 'BK123-XY/9']

匹配效果验证

  • 可正常匹配的合法字符串:AK3418CPMP、BK123-AB/c
  • 不会被匹配的非法字符串:AKBN(无数字)、BK1234(无字母)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 08:54:01