为什么这个Oracle正则表达式在换行符上匹配?

时间:2015-04-03 15:17:04

标签: regex oracle

我有一个正则表达式,用于查找与我们的有效字符白名单不匹配的字符。实际上,这是在文本列中查找错误数据。它似乎与换行符匹配:

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只是这些情况下的换行符(或多个新行)?

1 个答案:

答案 0 :(得分:0)

尝试使用[:space:]代替转义的换行符/回车符。它匹配“空格字符(非打印),例如回车符,换行符,垂直制表符和换页符”。 Reference

你应该得到类似的东西:

[^A-Za-z0-9()\\*+=.,:\/!%#[:space:]&''\"@?\ -]+