in java regex
i new in java. getting java stack overflow exception in regex strhinditext. should that?
try { // regex convert pattern "{\fldrslt {\fcs1 \ab\af24 \fcs0 ऩ}{" // "{\fldrslt {\fcs1 \ab\af24 \fcs0 ऩ}}}{" // strhinditext = strhinditext.replaceall("\\{(\\\\fldrslt[ ])\\{((\\\\\\s+[ ])+)((\\s*&#\\d+;\\s*(-|,|/|\\(|\\)|\"|;|\\.|'|<|>|:|\\?)*)+)\\}\\{","{$1{$2$4}}}{"); // regex convert pattern "{\fcs0 \af0 ऩ{ or {\fcs0 \af0 *\tab ऩ{" // "{\fcs0 \af0 ऩ }{" strhinditext = strhinditext.replaceall("\\{\\s*((\\\\\\s+[ ](\\*)?)+\\s*)(-|,|/|\\(|\\)|\"|;|\\.|'|<|>|:|\\?)*[ ]*(((&#\\d+;)[ ]*(-|,|/|\\(|\\)|\"|;|\\.|'|<|>|:|\\?)*[ ]*)+)\\{", "{$1 $4$5 }{"); // regex convert pattern "{ऩ \fcs0 \af0 {" // "{ऩ \fcs0 \af0 }{" strhinditext = strhinditext.replaceall("\\{\\s*(((&#\\d+;)[ ]*(-|,|/|\\(|\\)|\"|;|\\.|'|<|>|:|\\?)*[ ]*)+)[ ]*((\\\\\\s+[ ])+)\\{", "{$1 $5 }{"); } catch(stackoverflowerror er) { system.out.println("third try block stackoverflowerror in regex pattern reform rtf tags................"); er.printstacktrace(); // throw er; }
whenever these strhinditext contain large data gives java stackoverflow exception:
java.lang.stackoverflowerror 2013-08-08 15:35:07,743 error [stderr] (http-127.0.0.1-80-9) @ java.util.regex.pattern$curly.match0(pattern.java:3754) 2013-08-08 15:35:07,743 error [stderr] (http-127.0.0.1-80-9) @ java.util.regex.pattern$curly.match(pattern.java:3744) 2013-08-08 15:35:07,744 error [stderr] (http-127.0.0.1-80-9) @ java.util.regex.pattern$grouptail.match(pattern.java:4227) 2013-08-08 15:35:07,744 error [stderr] (http-127.0.0.1-80-9) @ java.util.regex.pattern$bmpcharproperty.match(pattern.java:3366) 2013-08-08 15:35:07,745 error [stderr] (http-127.0.0.1-80-9) @ java.util.regex.pattern$curly.match0(pattern.java:3782) 2013-08-08 15:35:07,745 error [stderr] (http-127.0.0.1-80-9) @ java.util.regex.pattern$curly.match(pattern.java:3744)
strhinditext data is:
`{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\cf21\insrsid13505584 भोपाल  । \par }\pard\plain \ltrpar\s16\ql \li0\ri0\sb100\sa100\sbauto1\saauto1\sl240\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid13505584 \cbpat20 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af1\afs18 \ltrch\fcs0 \cs21\b\f1\fs18\cf21\insrsid13505584 अन्वेषण करें  :}{\rtlch\fcs1 \af1\afs18 \ltrch\fcs0 \f1\fs18\cf21\insrsid13505584 \par भोपाल , मध्य प्रदेश की राजधानी प्राकृतिक सुंद`
option 1 - treat symptoms
look recursive calls in regex.
if not sure problem lies: try a regex tester this.
option 2 - treat cause (much better)
don't use regex if there better tools task.
in case could: search rtf parsing library or write own parser.
e.g. 1 here jahroy pointed out in comments.
Comments
Post a Comment