2013-06-23 65 views
0

对以下正则表达式有相当麻烦。Java正则表达式问题:匹配函数体

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

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

正则表达式工作得很好,直到我想识别它的数字。这是(。*)部分... 任何帮助?会很高兴!谢谢。

C.

+3

您能否提供您正在搜索的文本的示例和已编译的正则表达式的副本? – SlitCanvas

+0

public double abc2xyz(double value){return value * 100000;} 但是datetype可以是任何基于数字的数据类型 显然,该文本是一个java源文件。 不知道你编译的正则表达式是什么意思? – Chaoz77

回答

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"); 
} 
+0

很酷,谢谢!现在唯一的事情是,我的数字回来了,但我打算取代整个功能......? – Chaoz77

+0

@ Chaoz77我不确定你想说什么(也许是因为我的英语不太好)。尝试更多地描述它,或者甚至可以创建另一个/单独的问题。 – Pshemo

+0

对不起...由于缺少浏览器而导致错字... 我在问是否有办法取代整个功能?你描述它的方式,我只返回数字。我不想提取因素,但整个功能,并用我的正则表达式替换它。 – Chaoz77