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

时间:2013-10-24 12:46:35

标签: php regex perl

给出一个字符串:

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

但尚未成功。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:4)

使用否定前瞻声明123之后没有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";
}