牛骨文教育服务平台(让学习变的简单)
博文笔记

Java正则转义星号* 加号+ 反斜杠

创建时间:2016-09-03 投稿人: 浏览次数:6891

问题引入:

  这是我在使用Java正则表达式时,需要将已有的正则表达式和用户输入的字符串进行拼接,然后将新的字符串当作一个正则表达式来使用,这时,问题来了,如果用户输入连续的星号* 或者连续的加号+ 或者是反斜杠 就会导致String.matches()则会抛出异常PatternSyntaxException
  为了解决这个问题,就需要对用户输入的字符进行转义.
代码如下:

    public static void main(String[] args) {
        //字符串acdefg中有3个反斜杠"",将反斜杠进行转移为双反斜杠\
        String str1 = "a\bc\de\fg";
        System.out.println(str1);
        String result = str1.replaceAll("\\", "\\\\");
        System.out.println(result);
        //方法二,用replace()
        result = str1.replace("\", "\\");
        System.out.println("2:" + result);

        //字符串a****bcd中有4个星号,转义星号*
        String str2 = "a****bcd";
        System.out.println(str2);
        String result2 = str2.replaceAll("\*", "\\*");
        System.out.println(result2);

        //字符串a++++bcd中有4个星号,转义加号+
        String str3 = "a++++bcd";
        System.out.println(str3);
        String result3 = str3.replaceAll("\+", "\\+");
        System.out.println(result3);
    }
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。