捕获不以某个单词开头的字符串

时间:2016-06-17 02:31:07

标签: php regex preg-match

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

$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)) 

结果:

数组([0] =&gt;是我的名字)

需要结果:

数组([0] =&gt;亚历克斯)([1] =&gt;是我的名字)

1 个答案:

答案 0 :(得分:2)

使用负向前瞻而不是负面的后瞻..

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

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

如有必要,将最后一个\b替换为行锚$的结尾。

DEMO