Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.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_Preg Match - Fatal编程技术网

Php 捕获一个不带';不要以某个词开头

Php 捕获一个不带';不要以某个词开头,php,regex,preg-match,Php,Regex,Preg Match,我正在尝试使用preg_match捕捉某个字符串。我试图捕获所有不以单词(what)开头并以(is my name)结尾的字符串,但是,由于某种原因,我的正则表达式没有捕获名称。我做错了什么 $string = "alex is my name"; if (preg_match("~(?<!what) is my name~", $string, $match)) { print_r($match); } //end of if (preg_match("~(?<!what) is

我正在尝试使用preg_match捕捉某个字符串。我试图捕获所有不以单词(what)开头并以(is my name)结尾的字符串,但是,由于某种原因,我的正则表达式没有捕获名称。我做错了什么

$string = "alex is my name";
if (preg_match("~(?<!what) is my name~", $string, $match)) {
print_r($match);
} //end of if (preg_match("~(?<!what) is my name~", $string, $match)) 
$string=“alex是我的名字”;

如果(preg_)匹配(“~(?使用负向前看而不是负向后看.)

preg_match("~^(?!what\b)(\w+) is my name\b~", $string, $match)

如有必要,将最后一个
\b
替换为线锚末端
$


你就不能爆炸吗?爆炸('is my name',$string);“is my name”将始终是相同的对吗?如果字符串是(what is my name),它将捕获(帽子)作为名称(what is my name)。我宁愿不要(^),因为如果用户提交类似的东西(那么我的名字是什么)或类似的东西会怎么样。我的意思是没有(^),没有。很抱歉,这是打字错误,如果您已经阅读了上面的内容,并且没有任何意义,请重新阅读。我不明白的是,它如何能够在没有(^)的情况下捕获(hat)作为名称。这是怎么发生的?
(?!What\b)
检查匹配项之前不会有
What
而没有
^
(?!what\b)(\w+
应与
what
中的
hat
匹配,因为字符串
hat
前面没有
what
preg_match("~\b(?!what\b)(\w+) is my name\b~", $string, $match)