我認爲你在這裏混合兩件事,即替換和匹配。
當您想要提取匹配特定模式的部分輸入字符串時使用匹配。你的情況,似乎是你想要的,爲了得到那個後面是一個明星,而不是由任何東西之前,你可以使用下面的正則表達式的一個或多個數字:
^[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]+)
進行捕獲。