PHP очистить регулярное выражение
Эй я могу очистить preg_match в php из этого:
preg_match_all("/(".$this->reg['wat'].")?(".$this->reg['wat'].")?(".$this->reg['wat'].")?(".$this->reg['wat'].")?(".$this->reg['wat'].")?(".$this->reg['wat'].")?(".$this->reg['wat'].")?/",$value,$match);
выглядеть так:
preg_match_all("/
(".$this->reg['wat'].")?
(".$this->reg['wat'].")?
(".$this->reg['wat'].")?
(".$this->reg['wat'].")?
(".$this->reg['wat'].")?
(".$this->reg['wat'].")?
(".$this->reg['wat'].")?
/",$value,$match);
Прямо сейчас каждый пробел считается как разрыв строки, поэтому при поиске он не возвращает никаких находок. но это выглядит чище и легче для чтения, поэтому я прошу вас знать. я искал одно из этих писем, чтобы добавить после закрывающего "/" в регулярном выражении. Спасибо
3 ответа
Да, взгляните на параметр PCRE_EXTENDED:
x (PCRE_EXTENDED)
Если этот модификатор установлен, символы пробельных данных в шаблоне полностью игнорируются, за исключением случаев, когда они экранированы или находятся внутри класса символов, и символы между # неэкранированным # вне класса символов и следующим символом новой строки, включительно, также игнорируются. Это эквивалентно модификатору Perl /x и позволяет включать комментарии в сложные шаблоны. Обратите внимание, однако, что это относится только к символам данных. Пробельные символы могут никогда не появляться в последовательностях специальных символов в шаблоне, например, в последовательности (?(Которая вводит условный подшаблон).
preg_match_all('/('.$this->reg['wat'].'){0,7}/', $value, $match);
Это должно быть довольно чисто.
В случае, если это не было очевидно: (и в качестве расширенной / упрощенной версии ответа VolkerK) добавьте флаг x к вызову preg_match:
preg_match_all(".../x",$value,$match);
Это позволит вам использовать новые строки без регулярных выражений, соответствующих им.