php清理正则表达式

php清理正则表达式,php,regex,Php,Regex,嘿,我可以从以下内容清理php中的preg_匹配: 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);

嘿,我可以从以下内容清理php中的preg_匹配:

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);
现在,每个空格都算作一个换行符,因此在搜索时不会返回任何发现。但它看起来更干净,更容易阅读,这就是为什么我问你知道。我想在正则表达式中的结束“/”之后添加其中一个字母。谢谢

是的,请查看:

x(PCRE_扩展)
如果设置了此修饰符,则模式中的空白数据字符将被完全忽略,除非转义或在字符类内部,并且字符类外部的未转义#和下一个换行符(包括)之间的字符也将被忽略。这相当于Perl的/x修饰符,并使在复杂模式中包含注释成为可能。但是,请注意,这仅适用于数据字符。空白字符可能永远不会出现在模式中的特殊字符序列中,例如,在序列(?)中,该序列引入了条件子模式。
这应该相当清楚。

如果不明显:(作为沃尔克答案的扩展/简化版本)在preg_match call中添加x标志:

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

这将允许您在不使用正则表达式的情况下使用换行符。

这是在一个类中,这就是为什么它不工作的原因吗?我将它添加到中,但它没有找到任何结果。此答案已添加到“修饰符”下的。我只是在飞行中输入了这个,没有那么简单。你需要正确定义它有多简单,因为我不会给你一个不必要的复杂答案。
preg_match_all(".../x",$value,$match);