正则表达式通常表示为字符串,但它们也有属性(即单行、多行、忽略大小写)。你会如何储存它们?而对于编译好的正则表达式,如何存储呢?
请注意,我们可以编写自定义属性类:http://googleappengine.blogspot.com/2009/07/writing-custom-property-classes.html
由于我对 Python 的了解不够,所以我第一次尝试编写一个存储已编译正则表达式的自定义属性失败了。
请您参考如下方法:
我不确定 Python 是否支持它,但在 .net 正则表达式中,您可以在正则表达式本身中指定这些选项:
(?si)^a.*z$
将指定单行,忽略大小写。
确实,Python 文档在这里描述了这样一种机制:http://docs.python.org/library/re.html
回顾一下:(从上面的链接剪切'n'粘贴)
(?iLmsux)
(来自集合 'i'、'L'、'm'、's'、'u'、'x' 的一个或多个字母。)组匹配空字符串;这些字母设置了相应的标志:re.I(忽略大小写)、re.L(依赖于语言环境)、re.M(多行)、re.S(点匹配所有)、re.U(依赖于 Unicode)和re.X(详细),用于整个正则表达式。 (标志在模块内容中进行了描述。)如果您希望将标志作为正则表达式的一部分,而不是将标志参数传递给 compile() 函数,这将很有用。
请注意 (?x) 标志会更改表达式的解析方式。它应该首先在表达式字符串中使用,或者在一个或多个空白字符之后使用。如果标志前有非空白字符,则结果未定义。
