原始代码
select regexp_replace(string_data, "\\*+", "%") as new_string
from test_tb
报错信息
Caused by: java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0
分析过程
因为+、*、|、\等符号在正则表达示中有相应的不同意义,所以在使用时要进行转义处理。转义的办法有两种:
- 加双斜杠进行转义,例如将
*写成\\*; - 将需要转义的字符放在
[]中,例如将*写成[*].
解决方案
问题是这地方已经用双斜杠(方法 1)做了转义,仍然报错了,为此,可改用转义方法 2,使问题得到解决。sql code 如下:
select regexp_replace(string_data, "[*]+", "%") as new_string
from test_tb
版权声明:本文为Sinsa110原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。