PHP очистить регулярное выражение - PullRequest
0 голосов
/ 26 апреля 2010

эй, могу я почистить 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 ]

6 голосов
/ 26 апреля 2010

Да, взгляните на параметр PCRE_EXTENDED :

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

Это должно быть довольно чисто.

1 голос
/ 26 апреля 2010

В случае, если это не было очевидно: (и в качестве расширенной / упрощенной версии ответа VolkerK) добавьте флаг x к вызову preg_match:

preg_match_all(".../x",$value,$match);

Это позволит вам использовать переводы строк без фактического соответствия регулярному выражению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...