【问题标题】:Regex in Notepad++ : How to get last part of URLs?Notepad++ 中的正则表达式:如何获取 URL 的最后一部分?
【发布时间】:2015-02-20 03:34:33
【问题描述】:

我有一些这样的网址:

http://www.mywebsite.com/at/hello-everybody-mn0000000003
http://www.mywebsite.com/am/I-dont-care-mw0000322930
http://www.mywebsite.com/ccc/mood/I-love-you-d5207

如何获取删除最后一个单词的最后一部分?

hello-everybody
I-dont-care
I-love-you

【问题讨论】:

  • @Raptor,我不知道正则表达式。我只知道 ^.*\/ 从开头匹配到 "/"
  • 在 regex101.com 学习正则表达式
  • http://www.mywebsite.com/.*/(.+)-\S+$ - 括号中的部分是您所需要的
  • @fred-ii-,这不是那个问题的重复。这与 PHP 无关。
  • @Godisgood OP 没有回复我的任何(现已删除)cmets。沟通也很好;)重新打开。 OP 最初确实标记为 php。

标签: regex url notepad++


【解决方案1】:

您可以使用以下基于前瞻的正则表达式。

[^\/]+?(?=-[^-\/]+$)

DEMO

【讨论】:

  • 嗨,如何提取它们?
  • 使用这个.*?([^\/]+?)-[^-\/]+$ 正则表达式,然后用\1 替换匹配的字符参见regex101.com/r/gX3sD2/4
【解决方案2】:

试试这个正则表达式:/[\w-]+(?=-)/

示例:https://regex101.com/r/gX3sD2/1

【讨论】:

  • 太棒了!有效。但是,你能告诉我如何提取它们吗?
【解决方案3】:

不幸的是,这是我能得到的最远距离:

(?!\/)(?:.(?!\/))+(?=-)

这是匹配的:

http://www.mywebsite.com/at/hello-everybody-mn0000000003   Matches: hello-everybody
http://www.mywebsite.com/am/I-dont-care-mw0000322930       Matches: I-dont-care
http://www.mywebsite.com/ccc/mood/I-love-you-d5207         Matches: I-love-you

【讨论】:

  • 这个更简单:/[\w-]+(?=-)/.
  • 哦?那你为什么不发布答案呢?大声笑。
  • 因为这个问题已经关闭,我不能,呵呵。
【解决方案4】:

希望对你有帮助!

$str = 'http://www.mywebsite.com/at/hello-everybody-mn0000000003';
$str = preg_replace('@http://www.mywebsite.com/(.*)/@','',$str);
$str = substr($str,0,strrpos($str,'-'));

【讨论】:

  • 对不起,这不是 PHP。我删除了 PHP 标记。
猜你喜欢
  • 1970-01-01
  • 2018-08-18
  • 2016-08-05
  • 2010-09-06
  • 1970-01-01
  • 1970-01-01
  • 2014-09-04
  • 2015-02-22
  • 1970-01-01
相关资源
最近更新 更多