2013-06-23 14 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