如果不包含特定单词,我该如何匹配?

时间:2017-01-08 07:34:07

标签: php regex

这是我的字符串:

$str = "this is a string
        this is a test string";

我希望匹配thisstring(加上自己)之间的所有内容。

注意:这两个字之间可以是除test之外的所有内容。

所以我尝试匹配this is a string,但不是this is a test string。因为第二个包含单词test

这是我目前的模式:

/this[^test]+string/gm

But it doesn't work as expected

我该如何解决?

2 个答案:

答案 0 :(得分:2)

你这样做是为了排除列表“test”中的任何字符。这样做的方法是使用negative lookarounds。然后正则表达式会是这样的。

this((?!test).)*string

答案 1 :(得分:-1)

如果您想在没有正则表达式的情况下执行此操作,可以使用fnmatch()

function match($str)
{
    if (strpos($str, 'test') == false) /* doesn't contain test */
    {
        if (fnmatch('this*string', $str))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    else
        return false;
}