Ваше регулярное выражение сталкивается с катастрофическим возвратом .В нем есть чередующиеся части, которые могут совпадать с одним и тем же (например, каждый символ, соответствующий \w
, может также соответствовать \S
и предшествующим .*
), поэтому движку регулярных выражений приходится пробовать кучу перестановок.до объявления провала.Например, RegexBuddy прерывает попытку сопоставления после 1 миллиона шагов механизма регулярных выражений, и Firefox, очевидно, делает то же самое (разумное).
Что именно вы пытаетесь сделать?
Изменение регулярного выражения на
/.*\s+(or|and|not|xnot|near|near\d+|onear|onear\d+|title:|ingress:|\?|\*|\^|sourceid:|author:|url:|country:)\s+.*/i
значительно ускоряет матч (теперь всего 408 шагов, пока движок регулярных выражений не сможетобъявить неудачу).