@Test
public void test(){
String str="aabbaabb";
Pattern pat=Pattern.compile("[a]+|[b]+");
Matcher matcher=pat.matcher(str);
String newStr=matcher.replaceAll("");
System.out.println(newStr);
}
如上示例代码,正则表达式为“[b]+|[a]+”,很明显,在执行完之后,字符串中的a和b都会被替换成空字符串。
而当我把正则表达式改为Pattern pat=Pattern.compile("[a]*|[b]+");
之后执行,发现就只有a被替换成空字符,而b则不变,输出如下:bbbb
然后再当我将正则表达式改为“[a]+|[b]*”之后,执行,就a和b都变成空字符了,就等效于“[b]+|[a]+”了。到底为什么会这样子呢?小弟愚笨,没想通,还请各位指教一下。
很奇怪为什么即使有“|”符在,它也把[b]+忽略掉了。但把他们前后位置调换一下又可以了。