Python Case Insensitive Replace,不会损坏re cache

时间:2010-07-07 09:45:58

标签: python regex

相关问题:Case insensitive replace

在re模块中不使用HACHTING CACHE的情况下,更新不区分大小写的最佳方法是什么?我正在仔细监控缓存以确保我最喜欢的正则表达式(当然是速度)。

我只是注意到我的代码:

ner_token_result = re.sub('(?i)'+leftover, corrected_word, ner_token_result)
每次运行时都会重新编译

leftover是动态的(基于用户输入)。

我喜欢正则表达式(快速,我可以阅读它们)但我不想伤害我的缓存。

我不想使用无壳的字符串类...

我不希望转换为小写,替换和恢复案件的丑陋......

请帮帮忙?

2 个答案:

答案 0 :(得分:2)

如果您的其他表达式是预编译的,则意味着您执行了类似的操作:

regex = re.compile(leftover, re.I)

这意味着无论缓存过载如何,您都可以引用regex。如果您不这样做,请为需要在整个代码中重复使用的正则表达式执行此操作。

答案 1 :(得分:2)

显然,每次leftover更改时都需要编译动态正则表达式。您是否担心这会将您的其他正则表达式从缓存中推出?

如果是这样,只需使用re.compile

编译正在使用的其他正则表达式