java使用String.replaceAll方法其实底层使用的也是正则,而若替换的目标字符串是经过用户输入,或对用户输入加以拼装的,可能需要过滤
正则的元字符防止报错
解决方法如下:
-------------------------------------------------------------------------------------网上转载的资料------------------------------------------------------------------------------------
转义字符 \Q...\E
使用 \Q 开始,\E 结束,可使中间的标点符号失去特殊意义,将中间的字符作为普通字符。
使用 \U 开始,\E 结束,除了具有 \Q...\E 相同的功能外,还将中间的小写字母转换成大写。在大小写敏感模式下,只能与大写文本匹配。
使用 \L 开始,\E 结束,除了具有 \Q...\E 相同的功能外,还将中间的大写字母转换成小写。在大小写敏感模式下,只能与小写文本匹配。
说明
\Q...\E 适合用于:表达式中需要比较长的普通文本,而其中包含了特殊符号。
举例
表达式 | 说明 |
---|---|
\Q(a+b)*3\E | 可匹配文本 "(a+b)*3"。 |
\(a\+b\)\*3 | 如果不使用 \Q...\E 进行转义,则对每个特殊符号进行转义。 |