Кэшированный файл re.compile не соответствует проблеме на GAE - PullRequest
1 голос
/ 26 декабря 2010

Сегодня я попытался кэшировать re.compile, чтобы ускорить мое тестирование. Что-то странное:

Я использовал три кэшированных файла re.compile:

re_cache1=re.compile(regexp_string1)
re_cache2=re.compile(regexp_string2)
re_cache3=re.compile(regexp_string3)
def mytest():
  m = re_cache1.split(data)
  if m:
     for item in m:
       m2 = re_cache2.search(data2)
       if m2:
         m3 = re_cache3.search(data3)

Результат не ожидается, м2 отсутствует. Но если я немного изменюсь, я получу совпадение с m3.

       m2 = re.search(regexp_string2, data2)

Кто-нибудь мне помогает? Большое спасибо ~

1 Ответ

1 голос
/ 26 декабря 2010

Имейте в виду: модуль re все равно кэшируется внутри.Разница между

re_cache1 = re.compile(regexp_string1)
...
re_cache1.search(data)

и

re.search(regexp_string1, data)

- это один словарь поиска.Обычно не стоит дополнительной бухгалтерии кэшировать ваши собственные скомпилированные регулярные выражения.

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