相关疑难解决方法(0)

使用RegEx来解析大字符串时的java.lang.StackOverflowError

这是我的正则表达式

((?:(?:'[^']*')|[^;])*)[;]
Run Code Online (Sandbox Code Playgroud)

它用分号标记一个字符串.例如,

Hello world; I am having a problem; using regex;
Run Code Online (Sandbox Code Playgroud)

结果是三个字符串

Hello world
I am having a problem
using regex
Run Code Online (Sandbox Code Playgroud)

但是当我使用大输入字符串时,我得到了这个错误

Exception in thread "main" java.lang.StackOverflowError
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)
Run Code Online (Sandbox Code Playgroud)

这是怎么造成的,我该如何解决?

java regex stack-overflow

35
推荐指数
3
解决办法
2万
查看次数

标签 统计

java ×1

regex ×1

stack-overflow ×1