java.lang.StackOverflowError tout en utilisant une expression régulière pour Analyser les grandes chaînes

C'est ma Regex

((?:(?:'[^']*')|[^;])*)[;]

Il tokenizes une chaîne de caractères sur des points-virgules. Par exemple,

Hello world; I am having a problem; using regex;

Résultat est de trois chaînes de

Hello world
I am having a problem
using regex

Mais quand j'utilise une grande chaîne d'entrée, j'obtiens cette erreur

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)

Comment est-il la cause et comment puis-je le résoudre?

Quelle est la taille de la chaîne que vous êtes l'analyse?

OriginalL'auteur Ali | 2011-09-22