PHP preg_match - максимальное количество не жадных совпадений - PullRequest
1 голос
/ 25 января 2012

Есть ли известное ограничение на то, сколько раз мне разрешено использовать не жадное совпадение .*? в регулярном выражении в PHP?

Мой стог сена составляет ~ 200k символов, и я должен выяснить,, находятся ли 75 номеров в правильном порядке.Я знаю, что есть лучшие способы сделать это без использования preg_match, но ради этого вопроса, оставайтесь со мной.

  • Мое первое регулярное выражение выглядело как @123.*?456.*?789.*?101112@ и т. Д. С 75числа - это не удалось.

  • Второй подход: разделить после первых 30 чисел, поэтому у нас есть два регулярных выражения, такие как приведенное выше, первое из которых имеет 30, а второе 45 чисел.Второй сбой.

  • Третий подход: разделить после первых 40 чисел (таким образом, есть 40 и 35 чисел).Оба преуспели.

Я убедился, что числа 39 и 40 в порядке, поэтому я предполагаю, что существуют некоторые ограничения для preg_match.

1 Ответ

4 голосов
/ 25 января 2012

Проверьте, увеличив это значение

ini_set("pcre.backtrack_limit", "1000000");
...