Perl 正则表达式匹配任何不是的数字


perl regex match any number that is not

给定一个字符串:

//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/

但一直没有成功。 任何帮助不胜感激!

使用负前瞻来断言baz/之后没有123。然后继续匹配'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";
}