给定一个字符串:
//foo.bar/baz/123/index.html
我正在尝试匹配 baz 之后的数字,只要它不是 123。
//foo.bar/baz/124/index.html (WOULD MATCH)
//foo.bar/baz/123/index.html (WOULD NOT MATCH)
我该如何表达?我一直在尝试这样的事情:
/baz\/d+^(123)/index/
但一直没有成功。任何帮助表示赞赏!
使用否定前瞻断言没有123
after baz/
。然后继续匹配\d+
:
m~baz/(?!123\b)\d+/index~
在 Perl 中,当您的正则表达式模式已经包含 时,您可以使用不同的分隔符/
,以避免转义它们。这里我用过~
。
如果不允许的子字符串固定为baz/123
,您也可以使用index()
函数:
$str = "//foo.bar/baz/124/index.html";
$needle = "/baz/123/";
if (index($str, $needle) == -1) {
print "Match found\n";
}