java程序中正则表达式引发的cpu跑高问题

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

https://www.jb51.net/article/163520.htm

里面介绍的在线正则验证工具也很不错:

https://regex101.com

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。