PREG_或正则表达式问题

时间:2011-08-12 19:04:37

标签: php regex preg-match preg-split

我想匹配/的最后一个实例(我相信你使用[^/]+$)并复制接下来四个或更少数字的内容,直到我找到一个短划线{{1} }。

我相信返回此数字的“正确”方法是通过preg_split,但我是 不确定。我知道的另一种方法是在-上爆炸,阵列反向,在/上爆炸,分配。我确定有更优雅的方式吗?

例如

-

不幸的是,我不像你们中的一些人那样是一个正则表达的大师。

这是一种做同样事情的丑陋方式。

example.com/12-something // get 12

example.com/996-something // get 996

example.com/12345-no-deal // return nothing 

2 个答案:

答案 0 :(得分:1)

/\/(\d{1,4})-[^\/]+$/上的匹配应该符合第一个捕获变量中的数字。我道歉,我不写PHP而且我不想处理preg_match的界面,但无论如何这都是正则表达式。

如果PHP现在支持非斜杠正则表达式分隔符,m#/(\d{1,4})-[^/]+$#是那些使用较少倾斜牙签的版本。

答案 1 :(得分:1)

这应该有效

    $str = "example.com/123-test";
    preg_match("/\/([\d]{1,4})-[^\/]+$/", $str, $matches);
    echo $matches[1]; // 123

确保###-word部分在最后并且只有1-4位数。