2013-09-27 118 views
0

Im新的正則表達式和Im試圖在gwt客戶端使用RegExp。我想做一個簡單的*匹配。 (如果用戶輸入006 *,我想匹配006 ...)。我無法寫這個。我擁有的是:簡單的正則表達式匹配

input = (006*) 
input = input.replaceAll("\\*", "(" + "\\" + "\\" + "S\\*" + ")"); 
RegExp regExp = RegExp.compile(input). 

它也返回true,如字符串BKLFD006 *。我究竟做錯了什麼 ?

回答

2

^放在您生成的正則表達式的開頭。

^字符表示僅匹配源字符串的開頭。

1

我認爲你在這裏混合兩件事,即替換和匹配。

當您想要提取匹配特定模式的部分輸入字符串時使用匹配。你的情況,似乎是你想要的,爲了得到那個後面是一個明星,而不是由任何東西之前,你可以使用下面的正則表達式的一個或多個數字:

^[0-9]+(?=\*) 

,這裏是一個Java代碼片段:

String subjectString = "006*"; 
String ResultString = null; 
Pattern regex = Pattern.compile("^[0-9]+(?=\\*)"); 
Matcher regexMatcher = regex.matcher(subjectString); 
if (regexMatcher.find()) { 
    ResultString = regexMatcher.group(); 
} 

在另一方面,當你想替換從別的輸入字符串再發生圖案替換使用。

例如,如果要更換所有的數字,然後用用括號括相同數字的明星,那麼你可以做這樣的:

String input = "006*"; 
String result = input.replaceAll("^([0-9]+)\\*", "($1)"); 

注意使用$1引用的數字是其中使用正則表達式模式中的捕獲組([0-9]+)進行捕獲。