我需要删除某个项目列表末尾的一些字符。这些字符总是相同的(C、CD、PDF、CPDF、M),使用这个正则表达式我可以去掉它们:
str.replaceAll("(C|CD|PDF|CPDF|M)$", "");
但是,我无法反转此表达式:我希望能够隔离(例如,通过删除字符串的其余部分)任何这些代码,如果它们位于字符串。我试过这个:
str.replaceAll("!(C|CD|PDF|CPDF|M)$", "");
我可能会使用一些字符串函数,但我确信只使用正则表达式是可能的。
最佳答案
您已经使用括号来捕获匹配的组,现在只需引用该组即可。
Matcher m = Pattern.compile("(C|CD|PDF|CPDF|M)$").matcher("165N1JCD");
while (m.find()) {
System.out.println(m.group(1)); // prints out "CD"
}
关于Java 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1975418/