我有以下常规代码

import java.util.regex.Matcher;
import java.util.regex.Pattern;

String myInput="License_All (12313)"
String myRegex="\\(\\d+\\)"


String ResultString
Pattern regex
Matcher regexMatcher

regex = Pattern.compile(myRegex, Pattern.DOTALL);

regexMatcher = regex.matcher(myInput);

List<String> matchList = new ArrayList<String>();
while (regexMatcher.find()) {
matchList.add(regexMatcher.group());
}

for(int i=0;i<matchList.size();i++)
{
myInput=myInput.replaceAll( matchList[i], '')
println matchList[i]
}
println myInput


它应该删除(12313)部分,但它给了我下面的输出

(12313)
License_All ()


如何删除所有支架部分(12313)

最佳答案

matchList将包含匹配的部分,即(12313)。然后,再次将其作为replaceAll中的正则表达式,并因此将其解释为组。因此,支架未卸下。

相反,您可以直接在replaceAll中使用正则表达式:

myInput.replaceAll(myRegex, "")

10-06 03:03