【问题标题】:regexp - Match whole string if it doesn't contain another stringregexp - 如果它不包含另一个字符串,则匹配整个字符串
【发布时间】:2013-08-16 10:13:05
【问题描述】:

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

为了更清楚(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 (因为不知道它是从内部烧毁的 :)))。

【问题讨论】:

    标签: regex-lookarounds regex


    【解决方案1】:

    你可以试试这个模式:

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

    或者这个:

    ^(?!.*home).*$
    

    只要字符串中不包含home,这两种模式都将匹配任何字符序列。例如:

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

    您可以测试第二个模式here。

    【讨论】:

    • 那 看起来 好的,但我明白了:编译失败:lookbehind assertion is not fixed length。第二个没问题,所以+1 +接受。我稍后会分解第一个。
    • @zozo 我在 C# 中对其进行了测试,但它确实确​​实你使用什么引擎。
    • @zozo 有关此错误的更多信息,请参阅stackoverflow.com/a/3797290/1715579
    【解决方案2】:

    纯否定?成为或!(成为):

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

    【讨论】:

      猜你喜欢
      • 2019-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-11
      • 1970-01-01
      • 2015-06-01
      • 1970-01-01
      • 2021-06-23
      相关资源
      最近更新 更多