如何根据长度与字符组成规则从字符串中提取邮政编码?
提取符合特定格式的邮政编码
可以直接用正则表达式解决这个问题,它能精准匹配任意位置的、符合指定格式的子字符串,完全避开split方法的局限性。
解决方案代码(Python)
import re target_str = "85 ch. Osborne L'Ange-Gardien (Québec) J8L4C1 Canada" # 匹配「字母-数字-字母-数字-字母-数字」的6位格式 pattern = r'[A-Za-z]\d[A-Za-z]\d[A-Za-z]\d' result = re.search(pattern, target_str) if result: print(result.group()) # 输出:J8L4C1 else: print("未找到符合格式的字符串")
说明
- 正则表达式
[A-Za-z]\d[A-Za-z]\d[A-Za-z]\d完全贴合你要求的规则:[A-Za-z]匹配任意大小写字母\d匹配0-9的数字- 按字母、数字交替的顺序重复三次,刚好组成6位长度的目标子串
- 如果需要更严格匹配加拿大官方邮编规则(比如第一位字母不能是D、F、I、O、Q、U等),可以把正则调整为:
r'[A-CEGHJ-NPR-TV-Z]\d[A-CEGHJ-NPR-TV-Z]\d[A-CEGHJ-NPR-TV-Z]\d'
内容的提问来源于stack exchange,提问作者user15887962
相关产品推荐
相关产品推荐

