正则表达式 - 如果不包含另一个字符串,则匹配整个字符串

时间:2013-08-14 12:41:53

标签: regex-lookarounds regex

我需要做的是获取整个输入字符串,如果它不包含另一个字符串。

为了更清楚(PHP代码,并不重要,正则表达式很重要):

假设我们想要否定的字符串是“home”。

 preg_match($unknownReg, "This is a home bla bla", $part);
 echo $part; // I need to echo "";

 preg_match($unknownReg, "This is a car", $part);
 echo $part; // I need to echo "This is a car"

我知道strpos(对于php)这样的解决方案,但是我想要一个reg(因为不知道它是从内部烧掉:)))。

2 个答案:

答案 0 :(得分:2)

你可以尝试这种模式:

^.*(?<!home.*)$

或者这个:

^(?!.*home).*$

两种模式都匹配任何字符序列,只要它在字符串中的任何位置都不包含home即可。例如:

"This is a home bla bla" // no match
"This is a car"          // match

您可以测试第二种模式here

答案 1 :(得分:0)

纯粹的否定?成为或(将):

!preg_match("#home#", "This is a home bla bla", $part);