将符合规则的部分,都使用新的字符串来进行替换
注意:只用matcher()函数中,正则表达式只要有一个源字符串中的符号,不满足正则表达式,就会返回false..其他的像分组,替换,不满足正则表达式条件的时候会不停止地去查源字符串.一直查询到源字符串最后
package zhengze;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.omg.CORBA.PUBLIC_MEMBER;
public class str {
/**
* 利用正则表达式的规则定位到要替换的字符的位置.之后用replaceAll函数将所有的符合规则的字符替换成另外一部分
* @param str 代表源字符串
* @param reg 代表正则
* @param newStr 用newStr替换符合正则表达式规则的字符
*/
public static void replaceSllDemo(String str,String reg,String newStr){
str = str.replaceAll(reg, newStr);
System.out.print(str);
}
public static void main(String[] args) {
//要求将字符串中的数字替换成#号
String str = "wer1389980000ty34uiod23456f";
String reg = "\\d{5,}"; //你只要数字的个数超过了5个,我就会把你进行替换
String newStr = "#";
replaceSllDemo(str, reg, newStr);
}
}
现在我想把叠词替换成一个字母
- 使用$i 可以获取到第i组的结果
package zhengze;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.omg.CORBA.PUBLIC_MEMBER;
public class str {
/**
* 利用正则表达式的规则定位到要替换的字符的位置.之后用replaceAll函数将所有的符合规则的字符替换成另外一部分
* @param str 代表源字符串
* @param reg 代表正则
* @param newStr 用newStr替换符合正则表达式规则的字符
*/
public static void replaceSllDemo(String str,String reg,String newStr){
str = str.replaceAll(reg, newStr);
System.out.print(str);
}
public static void main(String[] args) {
//要求将字符串中的数字替换成#号
String str = "werkktyqqqquizzzzzzzzoi";
String reg =
"(.)\\1+";
String newStr = "$1";
//使用$符号加i,可以获取到第i组的结果
replaceSllDemo(str, reg, newStr);
}
}