【问题标题】:Regex : Website url regular expression translationRegex : 网站url正则表达式翻译
【发布时间】:2014-03-25 14:43:05
【问题描述】:

这里是 URL 的正则表达式:

(?<protocol>http|ftp)://(?<domain>[^/\r\n]+)(?<path>/[^\r\n]*)?

我想知道如何翻译?就像每个字符/标志的含义一样。

我知道:

(?&lt;protocol&gt;http|ftp)://::'protocol' 是分组名称

http|ftp - http 或 ftp

protocol后面的://必须是这些字符

然后我想澄清一下下面的意思:

`(?<domain>[^/\r\n]+)(?<path>/[^\r\n]*)?`

谢谢

【问题讨论】:

  • 转到Regex101并粘贴到(?&lt;domain&gt;[^\/\r\n]+)(?&lt;path&gt;\/[^\r\n]*)?
  • 很棒的资源!现在对我来说很清楚了。非常感谢!
  • 这个问题似乎是题外话,因为它只是要求一个正则表达式的解释

标签: regex url hyperlink


【解决方案1】:

当您指定(?&lt;text&gt;(regex)) 时,您所做的是为捕获组指定分组名称。捕获组可以拆分数据的匹配方式。

例如:(http|ftp)\: 只有一个捕获组,但匹配 (http OR ftp) 和 : 字符。后者未在捕获组中指定。

捕获组在很多情况下都很有用,例如 bash 或 Python,您需要一组特定的数据。因此,如果我只想要 http 或 ftp,但我想确保它后面跟着 ':',我会指定我想要捕获组 0。

现在回到正则表达式。

单独的正则表达式将是(这将匹配http://google.com)没有分组名称:

(http|ftp)\:\/\/([^/\r\n]+)(\/[^\r\n]*)

(http|ftp):: 匹配“http”或“ftp”。

\::: 匹配 ':' 字符。

\/:: 匹配“/”字符。

([^/\r\n]+) :: 匹配任何字符以及一个或多个不在集合中的匹配项。表示任何不是“/”的字符、返回字符或换行符。

([^\r\n]*) :: 匹配任何字符以及零个或多个不在集合中的匹配项。见上文。

现在以下只是 URL 的最后两部分。 URL由protocol://domain/path组成

(?<domain>[^/\r\n]+)(?<path>/[^\r\n]*)?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-01
    • 2021-07-11
    • 1970-01-01
    • 1970-01-01
    • 2015-04-13
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    相关资源
    最近更新 更多