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

Python(Google Colab)正则多条件匹配异常:无法筛选末尾仅单个1的三位数

问题分析与解决方案

原代码问题

你的代码里,第二个判断条件item != re.match(r'\d11', item).group()会导致符合要求的项被异常捕获跳过:

  • 当字符串不是x11格式时,re.match(r'\d11', item)返回None,调用.group()会触发AttributeError,被try-except捕获后直接跳过print,所以加了and后没有输出。

简化解决方案(无需正则,更高效)

直接通过字符串索引判断最后一位是1且倒数第二位不是1,同时简化三位数列表的生成:

# 生成000-999的三位数字符串列表
num_list = [f"{num:03d}" for num in range(1000)]

for item in num_list:
    # 判断最后一位是1,且倒数第二位不是1
    if item[-1] == '1' and item[-2] != '1':
        print(item)

正则解决方案

如果一定要用正则,直接写精准匹配的表达式,用re.fullmatch匹配整个字符串:

import re

num_list = [f"{num:03d}" for num in range(1000)]
# 匹配三位数字:第一位任意数字,第二位非1,第三位是1
pattern = re.compile(r'\d[^1]1')

for item in num_list:
    if pattern.fullmatch(item):
        print(item)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 00:25:23