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);
    }

转载于:https://my.oschina.net/yongli/blog/1491383

Java 中,正则表达式中的特殊字符需要进行转义,以便正确匹配。以下是一些常见的需要转义的特殊字符和对应的转义字符: - 反斜杠 `\`:在正则表达式中,反斜杠本身也需要进行转义,所以要使用两个反斜杠来表示一个反斜杠。例如,要匹配一个反斜杠字符,可以使用 `\\`。 - 方括号 `[]`:方括号用于表示字符类,如果要匹配方括号本身,可以使用 `\[` 和 `\]` 进行转义。 - 圆括号 `()`:圆括号用于分组,如果要匹配圆括号本身,可以使用 `\(` 和 `\)` 进行转义。 - 大括号 `{}`:大括号用于指定匹配次数,如果要匹配大括号本身,可以使用 `\{` 和 `\}` 进行转义。 - 点号 `.`:点号用于匹配除换行符外的任意字符,如果要匹配点号本身,可以使用 `\.` 进行转义。 - 星号 `*`:星号用于指定前面的元素可以出现零次或多次,如果要匹配星号本身,可以使用 `\*` 进行转义。 - 加号 `+`:加号用于指定前面的元素可以出现一次或多次,如果要匹配加号本身,可以使用 `\+` 进行转义。 - 问号 `?`:问号用于指定前面的元素可以出现零次或一次,如果要匹配问号本身,可以使用 `\?` 进行转义。 - 管道符 `|`:管道符用于指定多个选择项,如果要匹配管道符本身,可以使用 `\|` 进行转义。 这只是一些常见的需要转义的特殊字符,如果有其他特殊字符需要转义,请根据需要使用反斜杠进行转义
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值