嘿,我可以通过这个来清理php中的preg_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);
看起来像这样:
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);
现在每个空间,它都算作一个突破,所以在搜索时它不会返回任何发现。但它看起来更干净,更容易阅读是我问你知道的原因。我正在寻找在正则表达式中关闭“/”后添加的其中一个字母。感谢
答案 0 :(得分:6)
是的,请查看PCRE_EXTENDED option:
x(PCRE_EXTENDED))
如果设置了此修饰符,则模式中的空格数据字符将被完全忽略,除非转义或在字符类中,并且字符类外的未转义#和下一个换行符(包括在内)之间的字符为也被忽略了。这相当于Perl的/ x修饰符,并且可以在复杂模式中包含注释。但请注意,这仅适用于数据字符。空格字符可能永远不会出现在模式中的特殊字符序列中,例如在序列中(?(引入条件子模式。
答案 1 :(得分:3)
preg_match_all('/('.$this->reg['wat'].'){0,7}/', $value, $match);
那应该相当干净。
答案 2 :(得分:1)
如果不明显:(并作为VolkerK答案的扩展/简化版本)将x标志添加到preg_match调用中:
preg_match_all(".../x",$value,$match);
这将允许您使用新行而不使用正则表达式实际匹配它们。