Java RegEx麻烦:匹配函数体

时间:2013-06-23 14:14:57

标签: java regex

对以下正则表达式有一些麻烦。

String fktRegex ="public double " + a+ "2" + b + "(double value) {return value * (.*);}\n";

a和b是单独插入的字符串。

正则表达式工作正常,直到我想用它来识别数字。那是(。*)部分...... 任何帮助??真的很高兴!感谢。

下进行。

1 个答案:

答案 0 :(得分:2)

根据您的示例判断,我认为您需要逃避一些正则表达式元字符,例如{ } ( ) *,因此您的正则表达式应该看起来像更像是

"public double " + a + "2" + b + "\\(double value\\) \\{return value \\* (.*);\\}\n";

演示

// abc2xyz
String a = "abc";
String b = "xyz";

String fktRegex = "public double " + a + "2" + b + "\\(double value\\) \\{return value \\* (.*);\\}\n";

String data = "public double abc2xyz(double value) {return value * 100000;}\n";
Pattern p = Pattern.compile(fktRegex);
Matcher m = p.matcher(data);

if(m.find()){
    System.out.println(m.group(1));
}else{
    System.out.println("no match found");
}