在不区分大小写的情况下使用已编译的python正则表达式模式

时间:2015-05-14 08:59:20

标签: regex python-2.7

我有:

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

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

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

有没有办法在没有.pattern的情况下做同样的事情(即使用已编译的模式)?

1 个答案:

答案 0 :(得分:0)

查看正则表达式对象(Python 2.7Python 3.4)的API,它是re.compile返回的已编译正则表达式对象的类,没有一种方法允许您指定旗。 flags属性也是只读的。

因此,无法更改已编译的正则表达式对象的标志。您在问题中提取模式并使用新标志重新编译它的方法是实现它的方法。

允许通过更改标志来更改已编译的正则表达式的行为要求编译对象包含不同(组合)标志的代码路径,这些标志会或多或少(取决于标志的影响)膨胀编译的正则表达式使用大多数用例的未使用的代码路径。