它将如何修复以便能够捕获提到的URL格式?

时间:2014-08-07 08:32:06

标签: java python c++ c regex

字符串中的URL检测器是我正在处理的。在代码中,如您所见,pattern尝试在字符串中查找URL。但是,它无法检测到;

  • www.website.com
  • www.website.edu
  • www.website.gov
  • ww2.sample.co.uk
  • ftp ...

我的模式

Pattern.compile("\\(*https?://[-\\w+&@#/½=~()|?!:,.;]*[-\\w+&@#/%=~()|]");

如何修复它以便能够捕获所提及的网站格式?

为简单起见,预期输入输出是;

www.website.com -----> www.website.com

对于真实情况,我将在

中使用它

109 * 20210adlkwaokwww.website.com121 ^'^)'^ 209 -----> www.website.com

我愿意听到这两个案件的答案。

2 个答案:

答案 0 :(得分:1)

我可以注意到,您希望该模式能够在有或没有http / https的情况下捕获网站 - 这不包含在您的表达中。

更重要的是,我不确定\(*是 - (((((https://some.url.com)的目的是什么。

是https://½½½½½½½½½½½½有效网址?它会被接受。怎么样http:// =(抱歉丑陋的逃避。)?

https://test.com。 (末尾有一个点)是一个有效的URL,不会。

尝试这样的事情:

(https?://)?\\w+[\\w-.]*

请注意,并非所有可接受的字符都包括在内,因为我很懒,请参阅RFC 3986。另请参阅http://www.w3.org/Addressing/URL/url-spec.txt

答案 1 :(得分:0)

\b(((?#protocol)https?|ftp)://)?((?#domain)[-A-Z0-9.]+)((?#file)/[-A-Z0-9+&@#/%=~_|!:,.;]*)?((?#parameters)\?[A-Z0-9+&@#/%=~_|!:,.;]*)?

'?#'评论;