在不区分大小写的比较中使用编译的python regex模式



我有:

reYada = re.compile(u'^yAdA$', re.U)

在某些时候,我需要使用此编译模式执行不区分大小写的比较。我这样做了:

re.match(reYada.pattern, 'yada', re.IGNORECASE)

是否有一种方法来做同样的没有.pattern(即使用编译模式)?

查看正则表达式对象(Python 2.7, Python 3.4)的API,这是re.compile返回的编译后的regex对象类,没有一个方法允许您指定标志。

flags属性也是只读。

因此,不可能更改编译后的regex对象的标志。您在问题中使用的方法是提取模式并使用新标志重新编译它,这是处理它的方法。

允许通过改变标志来改变已编译正则表达式的行为需要编译对象包含不同(组合)标志的代码路径,这将或多或少(取决于标志的效果)在大多数用例中使用未使用的代码路径使已编译的正则表达式膨胀。

最新更新