[REGEX] StackOverflowError sur fonction find
	
	
		Bonjour,
j'ai une expression régulière qui lève une exception lorsque le texte source dépasse un certain nombre de caractère.
Il s'agit d'une StackOverflowError, sans numéro de ligne et sans explication claire.
Je ne comprend pas pourquoi cette erreur apparaît, peut-être avez vous une idée...
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 
 |  
		Pattern pattern = Pattern.compile("<BLOC>(\\s|.)*</BLOC>");
 
		StringBuffer txt = new StringBuffer();
		txt.append("<BLOC>");
		// exception avec i > 800
		for (int i=0; i<801; i++)
			txt.append("a");
		txt.append("</BLOC>");
 
		Matcher m = pattern.matcher(txt);
		if (m.find(0)) { // Exception in thread "main" java.lang.StackOverflowError
			System.out.println("find");
		} | 
 pour l'exemple je remplis txt avec 
	Citation:
	
		
		
			<BLOC>aaaaaaaa...</BLOC>
			
		
	
 L'exception est la suivante : 
	Citation:
	
		
		
			Exception in thread "main" java.lang.StackOverflowError
	at java.util.regex.Pattern$Loop.match(Unknown Source)
	at java.util.regex.Pattern$GroupTail.match(Unknown Source)
	at java.util.regex.Pattern$Dot.match(Unknown Source)
	at java.util.regex.Pattern$Branch.match(Unknown Source)
	at java.util.regex.Pattern$GroupHead.match(Unknown Source)
	at java.util.regex.Pattern$Loop.match(Unknown Source)
	...ça recommence sur plusieurs dizaines de lignes
			
		
	
 ça fonctionne avec 800 caratères mais pas plus.
Au passage cette expression n'est pas de moi et je connais pas la raison du (\\s|.)* dans le pattern plutôt que .*
Avec .* ça fonctionne sans problème, mais je voudrais tout de même bien comprendre cette l'origine de cette exception.