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
相关产品推荐
相关产品推荐

