正则表达式:网站网址正则表达式翻译

时间:2014-03-25 14:43:05

标签: regex url hyperlink

以下是网址的正则表达式:

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

我想知道怎么翻译?如每个字符/标志的含义。

我知道:

(?<protocol>http|ftp):// ::'protocol'是分组名称

http|ftp - http OR ftp

协议后

://必须是这些字符

然后我想澄清以下内容:

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

谢谢

1 个答案:

答案 0 :(得分:0)

当您指定(?<text>(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的最后两部分。网址由protocol://domain/path

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