干草堆:14201-33-0.html
针:0
正则表达式:((?:-[^-]*))$
件:
-0.html
所以我需要捕获上一个-
到.
的数字,不包括那些字符本身。我对正则表达式并不擅长,所以无法完全确定如何匹配0
。它可以是1或2位代替0
。
答案 0 :(得分:2)
您可以使用以下正则表达式:
'~-(\d+)\.\D*$~'
请参阅regex demo
<强>详情:
-
- 连字符(\d+)
- 第1组:一个或多个数字\.
- 一个点\D*
- 除数字以外的零个或多个字符(可以更改为[a-zA-Z]+
或特定的扩展名列表,例如(?:html?|php)
)$
- 字符串结束。$re = '~-(\d+)\.\D*$~';
$str = '14201-33-0.html';
if (preg_match($re, $str, $match)) {
echo $match[1];
}