java正则表达式怎么定义只替换中间的字符

 我来答
貌似風輕
2018-07-23 · TA获得超过7280个赞
知道大有可为答主
回答量:1672
采纳率:94%
帮助的人:698万
展开全部

可以使用分组来完成,替换字符串中使用$1、$2、$3……可以获取对应组的匹配结果。如果前后的字符串是固定的那更简单,直接在替换的时候写上就好了。

因为String的replaceAll就是使用的正则表达式所以示例直接使用的String的替换,Pattern的替换同理。

public class Demo {
    public static void main(String[] args) {

        String str = "aa文字1bb哈哈cc测试dx,测试字符串aa1234bb";

        // 替换aa、bb之间的字符串为 "成功"
        String str1 = str.replaceAll("aa.*?bb", "aa成功bb");
        System.out.println(str1);

        // 替换aa、bb之间的字符串为 "成功"
        String str2 = str.replaceAll("(aa).*?(bb)", "$1成功$2");
        System.out.println(str2);

        // 替换小写字母之间的字符串为 "成功"
        String str3 = str.replaceAll("([a-z]+).*?([a-z]+)", "$1成功$2");
        System.out.println(str3);

    }
}

折柳成萌
高粉答主

2018-07-23 · 繁杂信息太多,你要学会辨别
知道顶级答主
回答量:4.4万
采纳率:96%
帮助的人:6286万
展开全部
可以使用StringBuffer定义字符串,之后使用replace方法替换指定位置的字符串为指定的字符串内容,如下代码:
public class Demo1 {
public static void main(String[] args) {
StringBuffer buffer = new StringBuffer("123456");
System.out.println(buffer.toString());//输出123456
buffer.replace(0, 1, "a");
System.out.println(buffer.toString());//输出a23456
}
}
这里简单介绍一下replace方法的使用,replace方法一共有三个参数,第一个参数是指定要替换的字符串的开始位置,第二个参数是指定要替换的字符串的结束位置(注意这里的结束位置不包括本身),第三个参数是指定想将字符串替换成什么内容。
如:原字符串内容为"123456",现在调用replace(0, 2, "abc"),原字符串变为"abc3456"
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式