1

可能重复:
主机名正则表达式

我正在尝试使用 pcrepp (PCRE) 从 url 中提取主机名。pcre 正则表达式与 Perl 5 正则表达式相同。

例如:

url = "http://www.pandora.com/#/volume/73";
// the match will be "http://www.pandora.com/".

我找不到此示例的正则表达式的正确语法。

  • 需要适用于任何 url:amazon.com/sds/应该返回: amazon.com。或者abebooks.co.uk/isbn="62345627457245"/blabla/应该返回abebooks.co.uk
  • 我不需要检查 url 是否有效。只是为了获取主机名。
4

4 回答 4

2

请参阅Regexp::Common::URI::http ,它使用Regexp::Common::URI::RFC2396中定义的子模式。检查这些模块的源代码应该会让你很好地了解如何组合一个像样的模式。

于 2010-03-01T22:05:31.573 回答
2

像这样的东西:

^(?:[a-z]+://)?[^/]+/?
于 2010-03-01T21:44:35.760 回答
1

这是一种可能性:

^[a-zA-Z0-9\-\.]+\.(com|org|net|mil|edu|COM|ORG|NET|MIL|EDU)$

还有一个:

^http\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(/\S*)?$

这些和其他与 URL 相关的正则表达式可以在这里找到:正则表达式库

于 2010-03-01T21:45:45.257 回答
1
string regex1, regex2, finalRegex; 
regex1 = "^((\\w+):\\/\\/\\/?)?((\\w+):?(\\w+)?@)?([^\\/\\?:]+):?(\\d+)?(\\/?[^\\?#;\\|]+)?([;\\|])?([^\\?#]+)?\\??";

regex2 = "([^#]+)?#?(\\w*)";

    //concatenation
    finalRegex= regex1+regex2;

结果将排在第六位。在我问的另一个问题中回答:详细信息

于 2010-03-02T02:10:16.567 回答