最近在写的一个爬虫程序,有一段逻辑是从css文件中提取所有的背景图片url,于是想到用正则表达式提取所有匹配url("xxx")这种格式,再用分组捕获其中的url地址用于爬取。由于对正则表达式比较生疏,一开始写的正则是 Pattern.compile(".*url\\(\"(.*)\"\\).*"),运行以后,发现机器cpu飙升,每个线程的核心都基本跑满了,用jstack查看线程运行状态,基本都是在匹配正则这个地方。于是乎搜了下关于java正则的一些知识,修改正则以后顺利解决了这个问题。讲的比较好的一篇文章推荐给大家:
https://www.jb51.net/article/163520.htm
里面介绍的在线正则验证工具也很不错: