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

问题引入:

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

    public static void main(String[] args) {
        //字符串a\bc\de\fg中有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);
    }

你可能感兴趣的:(Java正则转义星号* 加号+ 反斜杠\)