我想知道这个问题是否对你们来说是显而易见的,我已经搜索了许多'stackoverflow帖子但未能得到答案。
我正在尝试制作一个最终匹配C.V和Job职位空缺的匹配器。现在我开始学习使用前面提到的正则表达式的正则表达式和匹配。我试图获得一个成功的匹配,以获得匹配的感觉,最终匹配我提到的其他东西,但现在即使是简单的东西也无法正常工作。
public class RunMatchSequence {
public static void main(String[] args) {
try {
String emailRegEx = "(\\w+)@(\\w+\\.)(\\w+)(\\.\\w+)*";
// String emailRegEx = "(?s).*";
Pattern pattern = Pattern.compile(emailRegEx);
String target= "You can email me at g_andy@example.com or andy@example.net to get more info";
String target2="You can email";
java.util.regex.Matcher matcher; {
matcher = pattern.matcher(target);
while(matcher.find()) {
System.out.println("Found a Match" + Matcher.group());
System.out.println("Start position: " + Matcher.start());
System.out.println("End position: " + Matcher.end());
}}} catch (StackOverflowError e) {
System.out.println("Stackoverflow");
//JOptionPane.showMessageDialog(null, "Stackoverflow");
}
}
}
这是运行模式的类。接下来是持有该组的类,这是StackOverflowError发生的地方。(认为它与无限递归有关,但我不知道如何解决它):编辑:我现在意识到导致无限递归的原因是return语句,但我不知道该放什么
public class Matcher{
public static void main(String[] args) {
RunMatchSequence.main(args);
//implements MatchResult {
// Pattern p = Pattern.compile("a*b");
// java.util.regex.Matcher m = p.matcher("aaaaab");
// boolean b = m.matches();
//}
}
static String group() {
// TODO Auto-generated method stub
return group();
}
static int end() {
// TODO Auto-generated method stub
return end();
}
static int start() {
// TODO Auto-generated method stub
return start();
}
}
答案 0 :(得分:2)
当你调用Matcher.group时,它会崩溃,因为group方法是递归的,但没有条件可以避免无限次调用。所以调用方法并调用并调用...
答案 1 :(得分:1)
所以这些:
static String group() {
// TODO Auto-generated method stub
return group();
}
static int end() {
// TODO Auto-generated method stub
return end();
}
static int start() {
// TODO Auto-generated method stub
return start();
}
已经过时了。