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

Java 如何修复它,以便它能够捕获提到的URL格式?,java,python,c++,c,regex,Java,Python,C++,C,Regex,字符串中的URL检测器是我正在研究的。如您所见,在代码中,模式尝试在字符串中查找URL。但是,它无法检测 www.website.com www.website.edu www.website.gov ww2.sample.co.uk ftp 我的模式 Pattern.compile("\\(*https?://[-\\w+&@#/½=~()|?!:,.;]*[-\\w+&@#/%=~()|]"); 它将如何被修复,以便它可以捕捉提到的网站格式 为简单起见,预期输入和输出为

字符串中的URL检测器是我正在研究的。如您所见,在代码中,模式尝试在字符串中查找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*20210ADLKWAOK www.website.com121^'^')^209------>www.website.com


我很乐意听到关于这两种情况的答案。

我注意到,您希望该模式能够捕获包含或不包含http/https的网站-这不包括在您的表达式中

更重要的是,我不确定\(*的目的是什么-((((()也会被抓住

https://½是一个有效的url吗?它将被接受。那么http://=(很抱歉用“.with”这个词转义)呢

(结尾带点)是有效的URL,不会

试着这样做:

(https?://)?\\w+[\\w-.]*
请注意,并不是所有可接受的字符都包括在内,因为我是纯懒惰的,请参阅RFC 3986了解这些字符。另请参阅


“?#”
comment;

如果你到处对其他用户发表辱骂性评论,你将被暂停使用。立即停止。
\b(((?#protocol)https?|ftp)://)?((?#domain)[-A-Z0-9.]+)((?#file)/[-A-Z0-9+&@#/%=~_|!:,.;]*)?((?#parameters)\?[A-Z0-9+&@#/%=~_|!:,.;]*)?