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

使用正则表达式提取指定字符串中括号内的年龄数值

问题说明

现有目标字符串片段:

year="Year Of Birth (Age): 1953 (68)"

需要提取(Age)标识后跟随的括号内的年龄数字。原有尝试的正则存在语法错误,无法匹配到结果。

原有正则问题

你编写的正则r'(Age):\s[0-9][0-9][0-9][0-9]\s\(([0-9[0-9])'存在两个明显问题:

  • 年龄匹配的字符组多写了一个左方括号,[0-9[0-9]属于语法错误
  • 硬编码年份为4位、年龄为2位,适配性差,遇到百岁老人3位年龄、或者格式里空格数量变化的场景就会失效

正确实现方案

方案1:使用findall匹配所有符合规则的年龄

import re

year = "Year Of Birth (Age): 1953 (68)"
age_list = re.findall(r'\(Age\):\s*\d+\s*\((\d+)\)', year)
# 匹配到结果后取第一个元素就是年龄字符串,示例中得到['68']
if age_list:
    age = age_list[0]

方案2:使用search匹配第一个符合规则的年龄(效率更高)

import re

year = "Year Of Birth (Age): 1953 (68)"
match_res = re.search(r'\(Age\):\s*\d+\s*\((\d+)\)', year)
if match_res:
    age = match_res.group(1)

正则规则说明

  • \(Age\):转义匹配字面量字符(Age)
  • :\s*:匹配冒号加任意数量的空白字符,适配不同空格长度的格式
  • \d+:匹配任意长度的出生年份数字,不用硬编码位数
  • \s*\(:匹配任意空白加左括号
  • (\d+):唯一捕获组,匹配括号内的年龄数字,支持1/2/3位年龄的场景
  • \):匹配右侧的右括号

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:45:02