神奇的java正则表达式 400 请求报错 -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

神奇的java正则表达式 400 请求报错 

2020-05-29 11:59:15 174 1

项目里用正则表达来匹配解析cookie,表达为: private final static Pattern PATTERN =

        Pattern.compile("(?:\s|[;,])\$([^;=]+)(?:=(?:"'["']|([^;,])))?(\s(?:[;,]+\s*|$))");(代码来自开源项目netty的CookieDecoder)

代码上线后,偶尔报错误log:    java.lang.StackOverflowError         at java.util.regex.Pattern$GroupHead.match(Pattern.java:4166)         at java.util.regex.Pattern$Loop.match(Pattern.java:4295)         at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)         at java.util.regex.Pattern$BranchConn.match(Pattern.java:4078)         at java.util.regex.Pattern$CharProperty.match(Pattern.java:3345)         at java.util.regex.Pattern$Branch.match(Pattern.java:4114)         at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)         at java.util.regex.Pattern$Loop.match(Pattern.java:4295)         at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)         at java.util.regex.Pattern$BranchConn.match(Pattern.java:4078)         at java.util.regex.Pattern$CharProperty.match(Pattern.java:3345)         at java.util.regex.Pattern$Branch.match(Pattern.java:4114)         at java.util.regex.Pattern$GroupHead.match(Pattern.java:4168)         at java.util.regex.Pattern$Loop.match(Pattern.java:4295)         at java.util.regex.Pattern$GroupTail.match(Pattern.java:4227)
      很长,略。 初步认为是请求头的cookie值含有特殊的符号造成stackOverflowError,但把这个出错的cookie的值放在本地机器跑,没有出错,正常解析,更诡异的是,就算是同样的cookie值在线上服务器也是有时候才出错,有时候却完全正常(排除多线程并发的问题,本身java.util.regex.Pattern是线程安全的,另外是单人手工测试,用btrace跟踪确认),如此执行结果不确定,还不说正则本身的性能问题(一字烂),唉!   线上jdk是sun 64bit jdk1.6_18,正则也是jdk自带的

取消 提交回答
全部回答(1)
  • kun坤
    2020-05-29 11:59:42

    使用 \s 后再使用 | 的话就会出现这样的问题,原因不明######用正则抛StackOverflowError问题我也遇到过几次,我也没去仔细深究,我一般处理办法是重写等价的正则,哈哈 如果2楼哥们说的属实,你可以把“(?:\s|[;,])”改成“(?:[\s;,])”试试~!~######同样的问题,google ing ...

    0 0
相关问答

162

回答

惊喜翻倍:免费ECS+免费环境配置~!(ECS免费体验6个月活动3月31日结束)

豆妹 2014-10-29 17:52:21 226102浏览量 回答数 162

8

回答

OceanBase 使用动画(持续更新)

mq4096 2019-02-20 17:16:36 336980浏览量 回答数 8

110

回答

OSS存储服务-客户端工具

newegg11 2012-05-17 15:37:18 295491浏览量 回答数 110

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 147218浏览量 回答数 22

18

回答

阿里云开放端口权限

xcxx 2016-07-20 15:03:33 646738浏览量 回答数 18

31

回答

[@倚贤][¥20]刚学完html/css/js的新手学习servlet、jsp需要注意哪些问题?

弗洛伊德6 2018-10-27 21:52:43 146031浏览量 回答数 31

33

回答

Win Server 2003-2016 加密勒索事件必打补丁合集

妙正灰 2017-05-15 10:44:38 280368浏览量 回答数 33

38

回答

安全组详解,新手必看教程

我的中国 2017-11-30 15:23:46 259808浏览量 回答数 38

294

回答

Linux Bash严重漏洞修复紧急通知(已全部给出最终修复方案)

qilu 2014-09-25 13:26:50 434543浏览量 回答数 294

13

回答

游戏云精彩帖汇总

nono20011908 2014-08-22 11:00:12 203955浏览量 回答数 13
+关注
0
文章
13401
问答
问答排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载