Регулярное ускорение - PullRequest
       16

Регулярное ускорение

1 голос
/ 07 июля 2019

Как я могу оценить временную сложность соответствия регулярному выражению с помощью boost?

Зависит ли это только от продолжительности и повторяемости или что-то еще связано?

Например, давайте предположим, что у меня есть это регулярное выражение, соответствующее любой буквенно-цифровой строке

[A-Za-z0-9]+

и у меня есть такая функция

bool isAlphanumerical(string str){
  return boost::regex_match(str, "[A-Za-z0-9]+");
}

есть ли способ сказать, какова его временная сложность? что делать, если я добавлю несколько таких случаев (я также изменил прежнее регулярное выражение, чтобы сопоставлять только комбинации цифр и заглавных букв):

[A-Z0-9]+$|\s*$|_*$

чтобы я мог сопоставлять строки только с пробелами или переносами?

А что, если я тоже вернусь к такой схеме

(?i)[A-Z0-9]+$|\s*$|_*$

...