java regex.Pattern 正则匹配时报:java.lang.StackOverflowError

环境

java:12
idea:2022.1.3

前言

做一个正则匹配的时候,类似相同的字符串文本,有些匹配成功,有些匹配报堆栈溢出StackOverflowError

一开始以为是文本过大的缘故。而实际上是正则表达式的问题,其在匹配子串时,匹配到了大量的文本。

类似的效果就是:原本应该命中15个匹配结果。结果值命中了三个,其中12个文本被正则表达式命中为一个(相当于一个超大文本)。

匹配超大文本本身就是没有意义的。jdk的底层暂时没看,不过底层肯定用了递归。

解决办法

当出现匹配的Pattern java.lang.StackOverflowError时,很有可能因为命中大文本造成的,这时需要优化正则表达式,让其命中多个结果,而不是一个大文本。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山鬼谣me

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值