我有一个正则表达式,用于查找与我们的有效字符白名单不匹配的字符。实际上,这是在文本列中查找错误数据。它似乎与换行符匹配:
SELECT REGEXP_SUBSTR (text_col, '[^A-Za-z0-9()\\*+=.,:\/!%#\n\r&''\"@?\ -]+')
AS match_text
FROM text_table
WHERE REGEXP_LIKE (text_col, '[^A-Za-z0-9()\\*+=.,:\/!%#\n\r&''\"@?\ -]+')
为什么返回包含所有有效字符的行,而match_text只是这些情况下的换行符(或多个新行)?
答案 0 :(得分:0)
尝试使用[:space:]
代替转义的换行符/回车符。它匹配“空格字符(非打印),例如回车符,换行符,垂直制表符和换页符”。 Reference
你应该得到类似的东西:
[^A-Za-z0-9()\\*+=.,:\/!%#[:space:]&''\"@?\ -]+