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

Python正则提取小于10的年龄问题:仅需输出1却未实现

解决正则匹配小于10年龄的问题

我来帮你搞定这个问题!你当前的正则表达式[0-9]{1}会匹配字符串里所有的单个数字字符,哪怕这些数字是属于多位数年龄的一部分(比如45里的4、5,50里的5、0),这就是为什么你得到了一堆不符合预期的结果。

正确的解决方案

我们需要匹配的是独立的单个数字——也就是这个数字本身是一个完整的、小于10的年龄,不是某个更大数字的组成部分。可以用正则的负向断言来实现:

import re
# 你的目标字符串
s5 = "The baby is 1 year old, Sri is 45 years old, Ann is 50 years old; their father, Sumo is 78 years old and their grandfather, Kris, is 100 years old"
# 匹配独立的单个数字(即小于10的年龄)
matched_ages = re.findall(r'(?<!\d)\d(?!\d)', s5)
print(matched_ages)  # 输出: ['1']

正则说明

  • (?<!\d):负向后行断言,确保当前匹配的数字前面没有其他数字,避免匹配多位数的开头数字(比如45里的4)
  • \d:匹配0-9之间的单个数字
  • (?!\d):负向前瞻断言,确保当前匹配的数字后面没有其他数字,避免匹配多位数的结尾数字(比如45里的5)

这样就能精准提取出字符串中作为独立年龄存在的单个数字,也就是你想要的结果啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:34:22