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

Python2.7改进正则表达式 同时匹配完整及不完整英国邮编

代码调整说明

你只需要做3处核心调整即可同时支持两类邮编识别:

  • 调整正则匹配逻辑,将完整邮编匹配规则放在最前,短邮编规则放在后面用|分隔,保证优先返回完整邮编,不会出现把完整邮编的前半段错当成短邮编返回的问题
  • 新增短邮编匹配规则:按照需求编写[A-Z]{1,2}\d{1,2},匹配1-2个字母后接1-2位数字的不完整邮编格式,覆盖SE3、E2、SE45、E34这类样例
  • 删掉原代码重复执行正则搜索的冗余逻辑,只需要执行一次搜索,通过判断结果是否为空决定返回匹配到的邮编还是"na",减少不必要的性能消耗
修改后可直接运行的代码
import re

def pcsearch(postcode):
    # 分支正则:优先匹配完整英国邮编,匹配失败再尝试匹配短格式邮编
    match_result = re.search(
        r'(?i)[A-Z]{1,2}[0-9R][0-9A-Z]? [0-9][A-Z]{2}|[A-Z]{1,2}\d{1,2}',
        postcode
    )
    return match_result.group() if match_result else "na"
效果验证

你可以用以下样例测试匹配结果:

  • 传入包含完整邮编的字符串"地址:DE2 7TT",会返回DE2 7TT
  • 传入仅包含短邮编的字符串"片区:SE45",会返回SE45
  • 传入没有对应邮编的字符串,会返回na
  • 大小写混写的邮编比如e2、Se3也能正常识别,和原有逻辑的大小写兼容能力一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 05:27:47