这是我的字符串:
$str = "this is a string
this is a test string";
我希望匹配this
和string
字(加上自己)之间的所有内容。
注意:这两个字之间可以是除test
之外的所有内容。
所以我尝试匹配this is a string
,但不是this is a test string
。因为第二个包含单词test
。
这是我目前的模式:
/this[^test]+string/gm
But it doesn't work as expected
我该如何解决?
答案 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;
}