怎么替换字符串中匹配正则表达式的字符 有一个字符串abc_jldef_lldegde,我要把以_开头然后接着两个任意字符的de替换成xx,即变成abc_jlxxf_llxxgde请问用正则表达式应该怎么做? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 String s ="abc_jldef_lldegde"; Pattern p = Pattern.compile("_[^_]*de*.(?=[_]|$|//z)"); Matcher m = p.matcher(s); while(m.find()){ s = s.substring(0,m.start())+m.group().replace("de","xx");//s = abc_jlxxf_llxxgxx }//s = abc_jlxxf_llxxgxx 不对啊,结果应该是s = abc_jlxxf_llxxgde,不是s = abc_jlxxf_llxxgxx;最后的“de”不应该被替换 s = s.substring(0,m.start())+m.group().replaceFirst("de","xx");用这个就可以了正则表达式功能真是强大啊 不好意思还是不行要是abc_jldef_dedegde的话得到:abc_jlxxf_xxdegde 哦,对不起,是接着两个任意字符的de替换成xx正则:Pattern p = Pattern.compile("_[^_]*(\\w{2})de*.(?=[_]|$|//z)");替换的话写个小小的函数决可以了 提供一个函数:public static String ReplaceString(String originalString,String replaceString){ return originalString.substring(0,3)+replaceString+originalString.substring(3+replaceString.length()); }//使用:s = s.substring(0,m.start())+ReplaceString(m.group(),"xx");//前提是接着两个任意字符的de import java.util.regex.Matcher;import java.util.regex.Pattern;;public class class1 { public static void main(String[] args) { String s ="abc_jldef_lldegde"; Pattern p = Pattern.compile("_[^_]{2}(de)"); Matcher m = p.matcher(s); while(m.find()){ s = s.substring(0,m.start()+m.group().lastIndexOf("de")) + "xx" + s.substring(m.end(),s.length()); } System.out.print(s); }} String org = "abc_jldef_lldegde";System.out.println(org.replaceAll("(_)\\w{2}","$1de")); Sorry,看错~ String org = "abc_jldef_lldegde"; System.out.println(org.replaceAll("(_\\w{2})\\w{2}","$1xx")); (_..)de=>$1xx测试工具:http://www.regexlab.com/zh/replshop.asp?pat=%28_..%29de&rto=%241xx&txt=abc_jldef_lldegde 不求包养但求解析??????????? 关于反射的Field,求大神解释。 ResultSetMetaData getTableName获取为空为什么?? jar提示: could not find the main class,program will exit 大家帮忙看看这个jdbc代码,和出错信息? 如何生成目录,并且复制一个已存在的文件到该目录下(急求) 类型转换问题 请指点一下 100分求jcreater pro 3.00.093的注册码? 初学求助啊!!!!!!!帮帮忙 高数与其它类数学 Enumeration 是个什么接口哦,有什么用啊? 请问下j2sdkee与j2ee区别
Pattern p = Pattern.compile("_[^_]*de*.(?=[_]|$|//z)");
Matcher m = p.matcher(s);
while(m.find()){
s = s.substring(0,m.start())+m.group().replace("de","xx");//s = abc_jlxxf_llxxgxx
}//s = abc_jlxxf_llxxgxx
正则表达式功能真是强大啊
得到:abc_jlxxf_xxdegde
正则:
Pattern p = Pattern.compile("_[^_]*(\\w{2})de*.(?=[_]|$|//z)");
替换的话写个小小的函数决可以了
public static String ReplaceString(String originalString,String replaceString){
return originalString.substring(0,3)+replaceString+originalString.substring(3+replaceString.length());
}
//使用:
s = s.substring(0,m.start())+ReplaceString(m.group(),"xx");
//前提是接着两个任意字符的de
import java.util.regex.Pattern;;
public class class1 { public static void main(String[] args) {
String s ="abc_jldef_lldegde";
Pattern p = Pattern.compile("_[^_]{2}(de)"); Matcher m = p.matcher(s);
while(m.find()){
s = s.substring(0,m.start()+m.group().lastIndexOf("de")) +
"xx" + s.substring(m.end(),s.length());
}
System.out.print(s);
}}
System.out.println(org.replaceAll("(_)\\w{2}","$1de"));
String org = "abc_jldef_lldegde";
System.out.println(org.replaceAll("(_\\w{2})\\w{2}","$1xx"));