मैं फ़ाइल से स्ट्रिंग से मेल खाने के लिए स्कैनर के साथ नियमित अभिव्यक्ति का उपयोग करने का प्रयास कर रहा हूं। रेगुलर एक्सप्रेशन से इस लाइन के अलावा फ़ाइल की सामग्री के सभी के साथ काम करता है:मेरा रेगेक्स जावा में एक स्टैक ओवरफ़्लो पैदा कर रहा है; मैं क्या खो रहा हूँ?
DNA="ITTTAITATIATYAAAYIYI[....]ITYTYITTIYAIAIYIT"
वास्तविक फ़ाइल में
, अंडाकार कई हजार अधिक वर्ण का प्रतिनिधित्व करता है।
जब फ़ाइल को पढ़ने वाला लूप बेस युक्त रेखा पर आता है, तो एक स्टैक ओवरफ़्लो त्रुटि होती है।
while (scanFile.hasNextLine()) {
final String currentLine = scanFile.findInLine(".*");
System.out.println("trying to match '" + currentLine + "'");
Scanner internalScanner = new Scanner(currentLine);
String matchResult = internalScanner.findInLine(Constants.ANIMAL_INFO_REGEX);
assert matchResult != null : "there's no reason not to find a match";
matches.put(internalScanner.match().group(1), internalScanner.match().group(2));
scanFile.nextLine();
}
और regex::
static final String ANIMAL_INFO_REGEX = "([a-zA-Z]+) *= *\"(([a-zA-Z_.]| |\\.)+)";
यहाँ विफलता का पता लगाने है:
java.lang.StackOverflowError
at java.util.regex.Pattern$CharProperty.match(Pattern.java:3360)
at java.util.regex.Pattern$Branch.match(Pattern.java:4131)
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4185)
at java.util.regex.Pattern$Loop.match(Pattern.java:4312)
at java.util.regex.Pattern$GroupTail.match(Pattern.java:4244)
at java.util.regex.Pattern$BranchConn.match(Pattern.java:4095)
at java.util.regex.Pattern$CharProperty.match(Pattern.java:3362)
at java.util.regex.Pattern$Branch.match(Pattern.java:4131)
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4185)
at java.util.regex.Pattern$Loop.match(Pattern.java:4312)
at java.util.regex.Pattern$GroupTail.match(Pattern.java:4244)
at java.util.regex.Pattern$BranchConn.match(Pattern.java:4095)
at java.util.regex.Pattern$CharProperty.match(Pattern.java:3362)
at java.util.regex.Pattern$Branch.match(Pattern.java:4131)
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4185)
at java.util.regex.Pattern$Loop.match(Pattern.java:4312)
at java.util.regex.Pattern$GroupTail.match(Pattern.java:4244)
at java.util.regex.Pattern$BranchConn.match(Pattern.java:4095)
...etc (it's all regex).
धन्यवाद इतना
यहाँ पाश है!
मैं देख सकता हूँ कि यह आपको एक stackoverflow ... प्राप्त करने के लिए कारण बनता है: पी ~ –