【问题标题】:Regular Expression to Extract String from URL从 URL 中提取字符串的正则表达式
【发布时间】:2011-07-24 02:42:51
【问题描述】:

我希望从 URL 中提取字符串。这是一个示例来说明我在寻找什么。

输入网址:http://www.nba.com/bulls/stats/ 输出:公牛

换句话说,我希望能够提取网址中倒数第二个和最后一个“/”之间的字符串。我知道我可以用“/”拆分并提取倒数第​​二个,但我正在寻找更简洁的正则表达式解决方案。

有什么想法吗?

【问题讨论】:

  • 我不了解正则表达式,您的字符串拆分选项对我来说似乎很简单:head(tail(unlist(strsplit(URL, "/")), 2), 1)
  • 倒数第二个和最后一个 / 之间的字符串是统计数据,而不是公牛数据。你的意思是你想要倒数第三个和倒数第二个/之间的字符串吗?
  • 是的。我的意思是倒数第三和倒数第二之间的那个

标签: regex r


【解决方案1】:

以下正则表达式可以完成这项工作

http[s]?://[\w\.]+/(\w+)/.*

【讨论】:

  • 我的意思可能是http[s]?而不是 http[s]*
  • 如果字符串中有任何特殊字符,例如-%,则不匹配。我不确定这是否相关。
  • https?就像上面提到的捷克语一样简单..你不需要把 [] 放在 s
【解决方案2】:

试试这个:

http://[^/]+/([^/]+)/[^/]+/?

【讨论】:

    【解决方案3】:

    如果你必须通过正则表达式来做,你可以简单地这样做(假设 JavaScript 风格的正则表达式语法):

    /\/([^\/]*)\/[^\/]*\/$/
    

    为了更容易理解,.NET 版本是这样的:

    @"/([^/]*)/[^/]*/$"
    

    但是,我认为在/ 上拆分的想法确实是正确的做法。

    【讨论】:

      猜你喜欢
      • 2014-08-25
      • 1970-01-01
      • 2015-03-10
      • 1970-01-01
      • 2021-10-19
      • 2018-02-23
      • 1970-01-01
      • 2018-06-20
      • 2011-05-10
      相关资源
      最近更新 更多