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

如何无需索引提取带连字符或不带连字符的末尾完整数字

解决方案

原代码的问题在于正则表达式(\d+)(?!.*\d)仅匹配连续数字序列,无法包含连字符,因此只能捕获到297,无法获取完整的297-32。

以下是两种无需使用索引的解决方法:

方法1:匹配标准邮编格式(数字-数字)

适用于明确是“数字+可选连字符+数字”的场景,精准匹配末尾目标:

import re
address = """1183 Pelham Wood Dr, Rock Hill, SC 297-32"""
zip_code_match = re.search(r'\d+(?:-\d+)?$', address)
if zip_code_match:
    print(zip_code_match.group())  # 输出: 297-32
  • \d+:匹配开头的数字段
  • (?:-\d+)?:非捕获组,匹配可选的“连字符+数字段”结构
  • $:锚定文本末尾,确保匹配的是最后一段符合规则的内容

方法2:匹配末尾所有数字与连字符组合

适用于末尾是任意数字和连字符组成的连续片段(无需固定结构):

import re
address = """1183 Pelham Wood Dr, Rock Hill, SC 297-32"""
zip_code_match = re.search(r'[\d-]+$', address)
if zip_code_match:
    print(zip_code_match.group())  # 输出: 297-32
  • [\d-]+:匹配一个或多个数字或连字符
  • $:锚定文本末尾,直接定位目标内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 17:01:11