c#正则表达式中的匹配与替换

string str=“17春六年级数学班(1次),17年夏季创意美术班(5次),17暑假写作(8次)”
把匹配括号里的单位"次"替换成别的内容
期望:str=“17春六年级数学班(1课时),17年夏季创意美术班(5课时),17暑假写作(8课时)”

4个回答

正则提取括号中的内容在执行replace操作


    protected string Replace(System.Text.RegularExpressions.Match m)
    {
        return m.Groups[0].Value.Replace("次", "课时");
    }



    string str = "17春六年级数学班(1次),哈次,17年夏季创意美术班(5次),17暑假写作(8次),次级";
    str = System.Text.RegularExpressions.Regex.Replace(str, @"\([^)]+\)", Replace);

如果你确认你括号内容都是 (数字次),直接替换

  string str = "17春六年级数学班(1次),哈次,17年夏季创意美术班(5次),17暑假写作(8次),次级";
 str=str.Replace("次)","课时)");

直接str.Replace("次", "课时");

XianRenShan
XianRenShan 只替换括号中的内容,用正则表达式替换,有什么好的建议吗?
大约 3 年之前 回复
 Pattern p=Pattern.compile("\\(\\d{1,2}.\\)"); //是匹配()的
            Matcher m=p.matcher(str); 
            while(m.find()){//它是分组,即有哪些匹配的,str.replace不改变str的值,所以才每次调用都进行赋值的
                System.out.println(m.group()+"m");
                str=str.replace(m.group().substring(1,m.group().length()-1),"课时");//去掉括号就剩里面的内容了
            }
            System.out.println(str);
            可以参考一下pattern和Mather的用法

顺便再看一下正则表达式,因为()在正则表达式中有意义。所以需转义用到的时候。也包括replace和split方法。也就是正则表达式用到的语法,
都需要转义。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问