試試這個:
Pattern pattern = Pattern.compile("<h3>(.*)<\\/h3>");
Matcher matcher = pattern.matcher("<h3>Basic Information</h3> <div>");
matcher.find();
StringBuffer sb = new StringBuffer();
matcher.appendReplacement(sb,"$1");
String result = sb.toString();
你之所以不能這樣做,只有replaceFirst那是因爲appendTail
方法被調用在replaceFirst
方法結束。匹配器將用空替換未指定的組,值指定的組以及當然不匹配的位也是如此,因爲沒有爲它們創建匹配,所以它們不會被替換爲所有。
在您的查詢的情況下:
組0:<H3>
組1:基本信息
組0:</H3 >
不匹配:<div>
這只是您可以對匹配器執行的一個通用示例。當然,如果你只是想在組中特定的......好吧只需使用:
matcher.group(1)
我不明白你爲什麼會想到得到的只有*「基本信息」 *與此代碼的結果。你確定'replaceAll'確實是你想要的嗎?也許你需要提取比賽而不是替換它。 –