Это действительно будет зависеть от языка и движка.s.lower()
и re.IGNORECASE
, как правило, работают медленно, потому что они пытаются работать со строками локализации или Unicode (см. этот вопрос ).Если пакет регулярных выражений, который вы используете, имеет дело с этим, а метод s.lower()
- нет, то метод s.lower()
- явный выигрыш.И наоборот.
В целом, я бы ожидал, что метод s.lower()
будет быстрее (он, как правило, более оптимизирован, чем сопоставление регулярным выражениям).Но в приведенном примере ...
r = re.compile(r'[Pp]')
r.match(s)
... будет быстрее, чем любой из них.