JAVA-正则提取img标签src属性中请求协议、域名、图片后缀

正则表达式:src=(\"|'| |)([\\S]{1,}?|[/]{1,})([/]{1,})(.+?)([/]{1,})(.+?)\\.(png|jpg|jpeg)(\"|'| |/>)

示例代码:

Pattern pattern = Pattern.compile("src=(\"|'| |)([\\S]{1,}?|[/]{1,})([/]{1,})(.+?)([/]{1,})(.+?)\\.(png|jpg|jpeg)(\"|'| |/>)");

Matcher matcher = pattern.matcher(url);

while(matcher.find()){

System.out.println("-------------------");

String host = matcher.group(4);

String imgUrl = matcher.group(2) + matcher.group(3) + matcher.group(4) + matcher.group(5) + matcher.group(6) + "." + matcher.group(7);

System.out.println(host);

System.out.println(imgUrl);

}

}

正则表达式拆分:src=(\"|'| |)([\\S]{1,}?|[/]{1,})([/]{1,})(.+?)([/]{1,})(.+?)\\.(png|jpg|jpeg)(\"|'| |/>)

  1. “src=”:匹配文本中src=开头
  2. $1“(\"|'| |)”:匹配src=" 或 src=' 或 src= 或src=空格,举个例子:src='https://*****.png';src="https://*****.png";src=https://*****.png;src= https://*****.png
  3. $2“([\\S]{1,}?|[/]{1,})”:[\\S]{1,}?匹配协议,任意非空白字符出现一次或多次非贪婪模式[/]{1,}匹配单斜线开头或多斜线开头,一般图片url为了遵循源站的协议,默认使用//img.xxx.com/imgs/test.png这种格式,这一段正则兼容http:、https:、ftp:、或/(此处正则只能获取到单斜线)
  4. $3“([/]{1,})”:匹配协议后面的斜线:例如https://、http://、//
  5. $4+$5“(.+?)([/]{1,})”:(.+?)匹配https://img.xxx.com/imgs/test.png,从协议/匹配到下一个/,中间的即为域名信息,$4=img.xxx.com;$5=/
  6. $6+$7“(.+?)\\.(png|jpg|jpeg)”:匹配https://img.xxx.com/imgs/test.png,$6=imgs/test;$7=png;\\.匹配纯文本的.;\\为转义符
  7. $8“(\"|'| |/>”:匹配src属性的结尾,同$1作用,匹配以:"、'、空格、/>结尾的字符
     

示例代码截图:

运行结果:

  1. -------------------
  2. path1
  3. host1/path1/name1.jpg
  4. '
  5. host1
  6. /
  7. path1
  8. /
  9. name1
  10. jpg
  11. -------------------
  12. -------------------
  13. paht2
  14. host2/paht2/name2.png
  15. '
  16. host2
  17. /
  18. paht2
  19. /
  20. name2
  21. png
  22. -------------------
  23. -------------------
  24. path3
  25. host3/path3/name3.png
  26.  
  27. host3
  28. /
  29. path3
  30. /
  31. name3
  32. png
  33. -------------------
  34. -------------------
  35. imgsa.baidu.com
  36. //imgsa.baidu.com/exp/w=480/sign=306a19aebb3533faf5b6922698d2fdca/1ad5ad6eddc451daa8799c4bbcfd5266d1163286.jpg
  37. "
  38. /
  39. /
  40. imgsa.baidu.com
  41. /
  42. exp/w=480/sign=306a19aebb3533faf5b6922698d2fdca/1ad5ad6eddc451daa8799c4bbcfd5266d1163286
  43. jpg
  44. -------------------
  45. -------------------
  46. static.228.cn
  47. http://static.228.cn/upload/Image/201705/1496220590906_8212_x.jpg
  48. "
  49. http:
  50. //
  51. static.228.cn
  52. /
  53. upload/Image/201705/1496220590906_8212_x
  54. jpg
  55. -------------------
  56. -------------------
  57. static.228.cn
  58. //static.228.cn/upload/Image/201705/1496220556164_5314_x.jpg
  59. "
  60. /
  61. /
  62. static.228.cn
  63. /
  64. upload/Image/201705/1496220556164_5314_x
  65. jpg
  66. -------------------

正则表达式参考菜鸟教程,链接:http://www.runoob.com/java/java-regular-expressions.html

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值