регулярное выражение: эффективность сравнения без учета регистра - PullRequest
1 голос
/ 03 июля 2010

Учитывая шаблон p и строку s, предположим, что p в нижнем регистре.Что из следующих двух более эффективно?

r = re.compile(r'p', RE.IGNORECASE)
r.match(s)

... или ...

r = re.compile(r'p')
r.match(s.lower())

1 Ответ

3 голосов
/ 03 июля 2010

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

В целом, я бы ожидал, что метод s.lower() будет быстрее (он, как правило, более оптимизирован, чем сопоставление регулярным выражениям).Но в приведенном примере ...

r = re.compile(r'[Pp]')
r.match(s)

... будет быстрее, чем любой из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...