正则表达式:以相反的顺序获取带有连字符的 url 的部分

Regex: Get parts of url with hyphens in reverse order

我 url 喜欢:

http://www.example.com/file/golf-background-loop-6863-thumb480x270.jpg

是否可以捕获由连字符分隔但顺序相反的单词?

  1. thumb480x270.jpg
  2. 6863
  3. 循环
  4. 背景
  5. http://www.example.com/file/golf

或者至少匹配最后两个:

  1. thumb480x270.jpg
  2. 6863

使用 String.prototype.split and Array.prototype.reverse 函数的简单解决方案:

var url = 'http://www.example.com/file/golf-background-loop-6863-thumb480x270.jpg',
    parts = url.split('-').reverse();

console.log(parts);

理想情况下在 - 上拆分一定是最简单的解决方案。但以防万一你必须使用正则表达式

使用正则表达式获取最后两个词应该很容易

.*-(\w+)-([\w.:\/]+)$

替换为

-

php.net是你的朋友

$url = 'http://www.example.com/file/golf-background-loop-6863-thumb480x270.jpg';

foreach (array_reverse(explode("-", $url)) as $idx => $part) {
    echo $idx + 1, ". ", $part, "\n";
}