У меня есть скрипт на python, в котором примерно 100 или около того строк регулярных выражений в каждой строке соответствуют определенным словам.
Сценарий, очевидно, потребляет до 100% процессора каждый раз, когда он запускается (я в основном передаю ему предложение, и он возвращает все найденные совпадающие слова).
Я хочу объединить их в 4 или 5 различных «скомпилированных» парсеров регулярных выражений, таких как:
>>> words = ('hello', 'good\-bye', 'red', 'blue')
>>> pattern = re.compile('(' + '|'.join(words) + ')', re.IGNORECASE)
Сколько слов я могу смело использовать в этом, и будет ли это иметь значение? Прямо сейчас, если я запускаю цикл с тысячей случайных предложений, он обрабатывает, возможно, 10 секунд в секунду, пытаясь резко увеличить эту скорость, чтобы она достигала 500 секунд (если это возможно).
Кроме того, возможен ли такой список?
>>> words = ('\d{4,4}\.\d{2,2}\.\d{2,2}', '\d{2,2}\s\d{2,2}\s\d{4,4}\.')
>>> pattern = re.compile('(' + '|'.join(words) + ')', re.IGNORECASE)
>>> print pattern.findall("Today is 2010 11 08)