无需引入三方依赖 文本匹配网址(支持多个) 网址解析(包括协议、主机、路径、参数等) package  com. qiangesoft. image. utils ; import  org. springframework. util.  Assert ; 
import  org. springframework. util.  CollectionUtils ; import  java. net.  MalformedURLException ; 
import  java. net.  URL ; 
import  java. util.  ArrayList ; 
import  java. util.  HashMap ; 
import  java. util.  List ; 
import  java. util.  Map ; 
import  java. util. function.  Consumer ; 
import  java. util. regex.  Matcher ; 
import  java. util. regex.  Pattern ; 
public  class  UrlHelper  { private  static  final  Pattern  PATTERN  =  Pattern . compile ( "((http|https|ftp):\\/\\/)?([\\w\\-]+\\.)+[\\w\\-]+(:[0-9]+)?(/[\\w\\[\\]\\-.~!*'();:@&=+$,/?#%]*)" ) ; public  static  void  main ( String [ ]  args)  throws  MalformedURLException  { String  content =  "8.97 复制打开抖音,看看【三融在东帝汶的作品】找个没人的地方. 然后一直躺到下午  https://v.douyin.com:8087/i2eTcJ82/?id=111&name=fsfe g@O.kP NwS:/ 06/18 " ; List < String > =  UrlHelper . findAll ( content) ; for  ( String  s :  list)  { System . out. println ( s) ; } String  one =  UrlHelper . findOne ( content) ; System . out. println ( UrlHelper . getProtocol ( one) ) ; System . out. println ( UrlHelper . getHost ( one) ) ; System . out. println ( UrlHelper . getPort ( one) ) ; System . out. println ( UrlHelper . getPath ( one) ) ; System . out. println ( UrlHelper . getFile ( one) ) ; System . out. println ( UrlHelper . getAuthority ( one) ) ; System . out. println ( UrlHelper . getQuery ( one) ) ; System . out. println ( UrlHelper . getQueryParam ( one) ) ; } public  static  String  findOne ( String  content)  { Assert . notNull ( content,  "content must be not null !" ) ; List < String > =  findAll ( content) ; return  CollectionUtils . isEmpty ( list)  ?  null  :  list. get ( 0 ) ; } public  static  List < String > findAll ( String  content)  { Assert . notNull ( content,  "content must be not null !" ) ; List < String > =  new  ArrayList < > ( ) ; findAll ( content,  ( matcher)  ->  { list. add ( matcher. group ( 0 ) ) ; } ) ; return  list; } private  static  void  findAll ( String  content,  Consumer < Matcher > )  { if  ( null  !=  content)  { Matcher  matcher =  PATTERN . matcher ( content) ; while  ( matcher. find ( ) )  { consumer. accept ( matcher) ; } } } public  static  String  getProtocol ( String  url)  throws  MalformedURLException  { URL  urlO =  new  URL ( url) ; return  urlO. getProtocol ( ) ; } public  static  String  getAuthority ( String  url)  throws  MalformedURLException  { URL  urlO =  new  URL ( url) ; return  urlO. getAuthority ( ) ; } public  static  String  getHost ( String  url)  throws  MalformedURLException  { URL  urlO =  new  URL ( url) ; return  urlO. getHost ( ) ; } public  static  int  getPort ( String  url)  throws  MalformedURLException  { URL  urlO =  new  URL ( url) ; return  urlO. getPort ( )  ==  - 1  ?  urlO. getDefaultPort ( )  :  urlO. getPort ( ) ; } public  static  String  getFile ( String  url)  throws  MalformedURLException  { URL  urlO =  new  URL ( url) ; return  urlO. getFile ( ) ; } public  static  String  getPath ( String  url)  throws  MalformedURLException  { URL  urlO =  new  URL ( url) ; return  urlO. getPath ( ) ; } public  static  String  getQuery ( String  url)  throws  MalformedURLException  { URL  urlO =  new  URL ( url) ; return  urlO. getQuery ( ) ; } private  static  Map < String ,  String > getQueryParam ( String  url)  { String  regex =  "(\\?|&+)(.+?)=([^&]*)" ; Pattern  pattern =  Pattern . compile ( regex) ; Matcher  matcher =  pattern. matcher ( url) ; Map < String ,  String > =  new  HashMap < > ( ) ; while  ( matcher. find ( ) )  { String  key =  matcher. group ( 2 ) ; String  value =  matcher. group ( 3 ) ; paramMap. put ( key,  value) ; } return  paramMap; } }