一个粉丝两个鲜肉包 2021-09-21 00:19 采纳率: 0%
浏览 39

正则表达式中将不需要替换的字符也替换了

输入字符串:"Never mistake silence//| for ignorance, calmness!@#$%^&~for acceptance, or |.*.kindness for weakness.";

已知字符串中会存在/|~!@#$%^&*();:_+-[]这些字符,要求将上面字符串中存在的字符都替换成空格。
最后期望输出是:"Never mistake silence\ \ for ignorance, calmness for acceptance, or . .kindness for weakness."
我的代码如下:

public class Test {
    public static void main(String[] args) throws ParseException {
        String str = "\"Never mistake silence\\/\\/| for ignorance, calmness!@#$%^&~for acceptance, or |.*.kindness for weakness.\"";
        String pattern = "[]/\\\\|~!@#$%\\\\^&*();:_+-[\\\\]]+";
        String newStr=str.replaceAll(pattern,"");
        System.out.println(newStr);


    }
}


最后输出的是:

"Never mistake silence for ignorance, calmnessfor acceptance, or ..kindness for weakness."

看了半天没看出来为啥silence后面的\ \为啥也会被替换掉呢?我的正则表达式中没有体现反斜杠这个字符啊?

  • 写回答

2条回答 默认 最新

  • CSDN专家-sinJack 2021-09-21 00:28
    关注
    分析一下patter中的“\\\\”
    第一个斜杠是转义符,第二个斜杠是斜杠本身,第三个斜杠是转义符,第四个斜杠是斜杠本身。
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 9月21日

悬赏问题

  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services