记录一个正则表达式 cpu 100%的问题

昨天一个同事找看个问题,请求某个接口在参数长一点的时候总是超时,查看atop信息,发现cpu几乎耗尽,atop信息如下

记录一个正则表达式 cpu 100%的问题_第1张图片

占用cpu最高的是他的进程,怀疑写了死循环,jstack发现如下

记录一个正则表达式 cpu 100%的问题_第2张图片

明显是有循环调用了,cpu爆的原因和 https://yq.aliyun.com/articles/25576 的一样,都是Curly方式,不过连接里很多是源码解析比如type=0,回到我们的问题,我们的正则表达式是怎么写的呢?

^(\\w*|\\W*)+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$

想匹配email

问题解决

修改正则表达式为

^[\\w*|\\W*]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$

修改点为小括号改为方括号

你可能感兴趣的:(Java行进中)