1.分组替换
一个括号代表一个组
(1) &(.*?)&代表$0,所以用$0替换时相当于没有替换(也就是保留了之前所有的内容)
如:
public void test1() {
String regex = "&(.*?)&";
String str = "&fjgn& &angkv& &jnv& &jnv&";
System.out.println(str.replaceAll(regex, "$0"));
}
此代码输出的而结果就是原来的
(2)当用$1时,就相当于将两个&之间的内容保留,别的就被替换了
如:
public void test1() {
String regex = "&(.*?)&";
String str = "&fjgn& &angkv& &jnv& &jnv&";
System.out.println(str.replaceAll(regex, "$1"));
}
输出结果&都被去除
(3)若只想替换中间,保留两边,则需要继续分组
如:把中间的内容替换成aaa,两边的&不变
public void test1() {
String regex = "&(.*?)&";
String str = "&fjgn& &angkv& &jnv& &jnv&";
regex = "(&)(.*?)(&)";
System.out.println(str.replaceAll(regex, "$1aaa$3"));
}
输出结果
(4)只想要中间的内容不要&,只需要取出$2
如:
@Test
public void test1() {
String regex = "&(.*?)&";
String str = "&fjgn& &angkv& &jnv& &jnv&";
regex = "(&)(.*?)(&)";
System.out.println(str.replaceAll(regex, "$2"));
}
输出结果:
总结:a.想要替换哪个组就写出对应的组名
b.若想要替换成别的东西,就在相应的组之间加上要替换的内容
2.Pattern和Matcher
@Test
public void test2() {
Pattern pattern