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

如何遍历并打印re.compile生成的正则模式中的每个元素?

问题描述

我想通过打印编译后的正则模式的每个元素,验证正则表达式是否编译正确。试了下面的代码:

import re
regex = re.compile('[A-z]')
for l in regex:   # 这行触发TypeError
    print(l)

结果出现错误:

TypeError: 're.Pattern' object is not iterable

请问有没有办法打印出如下内容?

A
B
C
...
解决方案

首先明确:re.compile()返回的是不可迭代的Pattern对象,不能直接遍历它。如果要获取[A-z]匹配的所有字符,有两种实用方法:

方法1:直接生成目标字符序列

如果你的需求是打印A到Z的大写字母(从示例输出看),可以直接用Python内置的string模块生成,完全不需要正则:

import string
for char in string.ascii_uppercase:
    print(char)

要是你确实需要[A-z]实际匹配的全部字符(注意这个正则范围不仅包含大小写字母,还包含[、\、]、^、_、`这些ASCII码介于A和z之间的字符),可以遍历对应的ASCII码区间:

for ascii_code in range(ord('A'), ord('z') + 1):
    print(chr(ascii_code))

方法2:通过正则筛选字符库

如果一定要借助正则来验证匹配逻辑,可以先生成所有候选字符,再用正则筛选出匹配项:

import re
regex = re.compile('[A-z]')
# 生成所有ASCII可打印字符
all_printable_chars = [chr(c) for c in range(32, 127)]
# 筛选出符合正则的字符
matched_chars = [char for char in all_printable_chars if regex.match(char)]
for char in matched_chars:
    print(char)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 06:15:22