社区
Java SE
帖子详情
正则表达式 java.lang.StackOverflowError
MinThinking
2010-04-21 04:26:31
使用正则表达式匹配一个大字符串时,会报java.lang.StackOverflowError。在网上搜了下 没找到比较好的解决方案,谁有比较好的解决办法说下! 要使用正则表达式的方式,其他的方式不太好(因为我的匹配模式比较复杂,所以觉得用正则比较方便)。
下面大家都说说解决思路和办法吧! 谢谢!
...全文
353
25
打赏
收藏
正则表达式 java.lang.StackOverflowError
使用正则表达式匹配一个大字符串时,会报java.lang.StackOverflowError。在网上搜了下 没找到比较好的解决方案,谁有比较好的解决办法说下! 要使用正则表达式的方式,其他的方式不太好(因为我的匹配模式比较复杂,所以觉得用正则比较方便)。 下面大家都说说解决思路和办法吧! 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
25 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gaohaixiax
2011-05-19
打赏
举报
回复
楼主怎么解决的,我现在也遇到这种问题了。。。
justlearn
2010-04-23
打赏
举报
回复
楼主解决了?给个思路
lvnannan123
2010-04-22
打赏
举报
回复
我公司从事软件外包,现在在招聘网上很难找到愿意外包的软件工程师,特在此寻找人才,有意向的请联系我,0571-56884997
licip
2010-04-22
打赏
举报
回复
把内存加大一点吧。
hbgzg3006
2010-04-22
打赏
举报
回复
楼主你不能详细说明,示意一下也好啊。你的字符串,以及你写的正则的思路。
给定的字符串满足以下这个,单纯是这个的话。不要用正则了。
(meta)*, (typedef)*, (import)*, (class|subclass|joined-subclass|union-subclass)*,(resultset)*, (query|sql-query)*,(filter-def)*,(database-object)+
干嘛非要(meta)*这样,你直接if (str.contains("meta"))不就行了。
MinThinking
2010-04-22
打赏
举报
回复
有好的解决办法 说说啊! 别单纯的顶
hbgzg3006
2010-04-22
打赏
举报
回复
[Quote=引用 22 楼 minthinking 的回复:]
引用 19 楼 hbgzg3006 的回复:
楼主你不能详细说明,示意一下也好啊。你的字符串,以及你写的正则的思路。
给定的字符串满足以下这个,单纯是这个的话。不要用正则了。
(meta)*, (typedef)*, (import)*, (class|subclass|joined-subclass|union-subclass)*,(resultset)*, (query|sql-……
[/Quote]
既然这样,你可以试试这么做。
所有的捕获组()都换成这样
(?:meta)*,(?:typedef)*,……(?:class|subclass|joined-subclass|union-subclass)*……,意思并没有改变,只不过现在不放在内存里了。
MinThinking
2010-04-22
打赏
举报
回复
[Quote=引用 19 楼 hbgzg3006 的回复:]
楼主你不能详细说明,示意一下也好啊。你的字符串,以及你写的正则的思路。
给定的字符串满足以下这个,单纯是这个的话。不要用正则了。
(meta)*, (typedef)*, (import)*, (class|subclass|joined-subclass|union-subclass)*,(resultset)*, (query|sql-query)*,(filter-def)*,(dat……
[/Quote]
现在要判断字符串是否符合某个规则,就想DTD的约束那样 ,用字符的方法好像收不到那种效果的吧!
wjz748305545
2010-04-21
打赏
举报
回复
接分,顶
qjtttt
2010-04-21
打赏
举报
回复
晕,几万。。。。。
楼主试试写两个正则
字符串从中间一刀分,一个正则匹配前半段,一个匹配后半段
感觉可能还是行不通,呵呵
我也只会玩一般的正则,调优也不会。。。
我随便说说
zfq642773391
2010-04-21
打赏
举报
回复
要不要试试拆分一下字符串啊
zfq642773391
2010-04-21
打赏
举报
回复
[Quote=引用 13 楼 minthinking 的回复:]
引用 3 楼 minthinking 的回复:
跟分组没有多大关系吧 现在就是匹配的字符串长度太长了。
比如说给定的字符串要满足以下条件
(meta)*, (typedef)*, (import)*, (class|subclass|joined-subclass|union-subclass)*,(resultset)*,(query|sql-query)*,(filter-def)*……
[/Quote]
几万!!!也太大了点吧
MinThinking
2010-04-21
打赏
举报
回复
[Quote=引用 3 楼 minthinking 的回复:]
跟分组没有多大关系吧 现在就是匹配的字符串长度太长了。
比如说给定的字符串要满足以下条件
(meta)*, (typedef)*, (import)*, (class|subclass|joined-subclass|union-subclass)*,(resultset)*,(query|sql-query)*,(filter-def)*,(database-object)+;
但是……
[/Quote]
长度大概几万字符吧
hbgzg3006
2010-04-21
打赏
举报
回复
楼主说一下你的字符串多长?还有你的正则怎么写的。
zfq642773391
2010-04-21
打赏
举报
回复
不会啊 正则只会一般的 调优就不会了
等待高手...
不姓贾_请叫我甄先生
2010-04-21
打赏
举报
回复
学习。。。。
cooler4k
2010-04-21
打赏
举报
回复
如果你只想知道是匹配的结果,那分组都用非捕获的 (?:meta)* ...
因为分组结果肯定是会占用空间的,至于效果咋样,你试试吧
zfq642773391
2010-04-21
打赏
举报
回复
[Quote=引用 4 楼 minthinking 的回复:]
引用 2 楼 zfq642773391 的回复:
递归太深了,把正则贴出来,让大家看看能不能简化一下
跟正则有关系吗?应该是跟字符串长度有关的吧?
[/Quote]
恩 应该是字符串太大的缘故吧
MinThinking
2010-04-21
打赏
举报
回复
[Quote=引用 5 楼 justlearn 的回复:]
匹配表达式加参数试试
Pattern.compile(你的表达式,Pattern.DOTALL + Pattern.MULTILINE)
[/Quote]
这个我试过了 不行的! 有没有其他的外部jar能跳过堆栈操作的,我用了apache的regex jar也不行
justlearn
2010-04-21
打赏
举报
回复
PS:DOTALL模式不一定需要,看你需求
加载更多回复(5)
Dapper从入门到精通
Dapper是国外大型IT问答社区
Stack
OverFlow
最早开发并开源的,Dapper的源代码放在github上托管,并且可以用NuGet方式添加到项目中,Dapper的r支持多表并联的对象,支持一对多、多对多的关系,支持原生sql与模型对象混合...
java
正则表达式
懒惰_
Java
正则表达式
Stack
Overflow
Error
问题及其优化
原标题:
Java
正则表达式
Stack
Overflow
Error
问题及其优化来源:xrzs,my.oschina.net/leejun2005/blog/486584正则可以看做一门 DSL,但它却应用极其广泛,可以轻松解决很多场景下的字符串匹配、筛选问题。同时呢有句老话:“ 如果你有一个问题,用
正则表达式
解决,那么你现在就有两个问题了。”Some people, when confronte...
java
正则表达式
find_
正则表达式
Matcher.find报错
java
.
lan
g.
Stack
Overflow
Error
解决
在最近一个
java
项目中使用了
正则表达式
,抓取网页中的内容,明明很正确的
正则表达式
,但在Matcher.find时报错了:publicstaticListfindStrs(Stringregx,StringsourceStr){Patternpattern=Pattern.compile(regx);Matcherm=pattern.matcher(sourceStr);Li...
UDF中之正则报错
java
.
lan
g.
Stack
Overflow
Error
报错如下: Exception in thread "main"
java
.
lan
g.
Stack
Overflow
Error
at
java
.util.regex.Pattern$Loop.match(Pattern.
java
:4779) at
java
.util.regex.Pattern$GroupTail.match(Pattern.
java
:4731) at
java
.util.regex.Pattern$Curly.match0(Pattern.
java
:4286) at
java
.util
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章