Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 否定完全正则表达式_Php_Regex_Regex Negation_Regex Lookarounds_Negation - Fatal编程技术网

Php 否定完全正则表达式

Php 否定完全正则表达式,php,regex,regex-negation,regex-lookarounds,negation,Php,Regex,Regex Negation,Regex Lookarounds,Negation,强制某个url结构“type/name”和我的工作正则表达式是: ([a-z]+\/?[a-z]+\/?)+ 现在我想通过preg_replace删除字符串中的所有其他字符,从而否定上面的模式。像[^a-z]这样的简单例子很好用,但对于我的模式,我无法通过否定整个模式来实现它。您可以尝试以下方法: (?!([a-z]+\/?[a-z]+\/?)+) 即: 前缀(?! 后缀) 您可以尝试以下方法: (?!([a-z]+\/?[a-z]+\/?)+) 即: 前缀(?! 后缀) 这可能是否定

强制某个url结构“type/name”和我的工作正则表达式是:

([a-z]+\/?[a-z]+\/?)+
现在我想通过preg_replace删除字符串中的所有其他字符,从而否定上面的模式。像[^a-z]这样的简单例子很好用,但对于我的模式,我无法通过否定整个模式来实现它。

您可以尝试以下方法:

(?!([a-z]+\/?[a-z]+\/?)+)
即:

  • 前缀
    (?!
  • 后缀
您可以尝试以下方法:

(?!([a-z]+\/?[a-z]+\/?)+)
即:

  • 前缀
    (?!
  • 后缀

这可能是否定regexp的唯一直接方法。所以,我投票给你:)否定一个ReXEP意味着扫描整个字符串空间以匹配第一个正则表达式,如果它们匹配,就认为它们是无与伦比的。没有直接形式将regexp转换为其否定(或补码)一种有效的算法是将regexp编译为DFA,然后将所有接受状态更改为非接受状态,然后将结果再次转换回regexp。但通常情况下,由此产生的regexp比原来的要复杂得多。这可能是唯一直接否定regexp的方法。所以,我投票给你:)否定一个ReXEP意味着扫描整个字符串空间以匹配第一个正则表达式,如果它们匹配,就认为它们是无与伦比的。没有直接形式将regexp转换为其否定(或补码)一种有效的算法是将regexp编译为DFA,然后将所有接受状态更改为非接受状态,然后将结果再次转换回regexp。但通常情况下,由此产生的regexp比原来的要复杂得多。