PostgreSQL正则表达式-检查字符串中未转义的特殊字符

时间:2018-12-13 17:31:21

标签: regex postgresql postgresql-9.5

好的,这个问题可能看起来像一个重复的问题,但请记住,Postgres(9.5)不支持负面的回溯,所以这样的事情是行不通的

SELECT 'blah?' ~ '(?<!\\)[\?\$\&\#\?\@]'

所以我想要一个正则表达式来表示“使用未转义的特殊字符查找字符串”,例如如果[]列表中的任何特殊字符都没有用\进行转义,则在Postgres 9.5上使用〜运算符将其返回false,因此上述应返回False。

“等等?”错误

'等等\'是

'bl?ah'错误

'不是'错误

'aren \'t'true

'\'stuff'true

“我们为什么不回家?\;”错误

'我们为什么不回家\?\;'是

另一个问题是如何在正则表达式匹配字符串中包含'(或\')字符,以便在不转义的情况下也可以正确识别它。

特殊字符的完整列表比上面的示例大-常规的31个字符(所有大括号,(半)分号,撇号,反引号等)

我将其放在此处,而不是在dba.stackexchange.com中,因为与PostgreSQL相比,这更是一个Regex问题。

0 个答案:

没有答案