【发布时间】:2011-08-31 09:58:25
【问题描述】:
python中编译的正则表达式的类型是什么?
特别想评价一下
isinstance(re.compile(''), ???)
这是真的,出于自省的目的。
我的一个解决方案是,有一些全局常量REGEX_TYPE = type(re.compile('')),但它似乎不是很优雅。
编辑: 我想这样做的原因是因为我有字符串列表和已编译的正则表达式对象。我想将字符串与列表“匹配”,通过
- 对于列表中的每个字符串,尝试检查字符串是否相等。
- 对于列表中的每个正则表达式,尝试检查字符串是否与给定模式匹配。
我想出的代码是:
for allowed in alloweds:
if isinstance(allowed, basestring) and allowed == input:
ignored = False
break
elif isinstance(allowed, REGEX_TYPE) and allowed.match(input):
ignored = False
break
【问题讨论】:
-
Python 是关于管道类型的。这违背了 Python 的精神。
-
这可能是最好的方式如果你真的必须检查类型。据我记得,只有
re._pattern_type可能以下划线开头是有原因的。 -
ad.match(输入) ???你是说 allowed.match(input) 吗?
-
@ultimatebuster: 或者
duck taping:)