ОК, этот вопрос может показаться дубликатом, но имейте в виду, что Postgres (9.5) не поддерживает негативные взгляды, поэтому что-то вроде этого не работает
SELECT 'blah?' ~ '(?<!\\)[\?\$\&\#\?\@]'
Так что я хочу регулярное выражение для "«Найти строки с неэкранированными специальными символами», например, с помощью оператора ~ в Postgres 9.5 для возврата false, если в списке [] есть какой-либо специальный символ, который не экранирован символом \, так что выше должен возвращать False.
"бла?"false
'бла \?'true
'bl? ah' false
'не являются' false
'aren \' t 'true
' \ 'stuff' true
«Почему мы не идем домой? \;»false
'почему мы не идем домой \? \;'true
Дополнительный вопрос заключается в том, как включить символ '(или \') в строку соответствия регулярному выражению, чтобы его можно было правильно идентифицировать, если не экранировать.
Полный список специальных символов больше, чем в приведенном выше примере - обычно 31 символ (все скобки, (полу) двоеточия, апостроф, обратная черта и т. Д.)
Я ставлюэто здесь, а не на dba.stackexchange.com, потому что это больше вопрос Regex, чем вопрос PostgreSQL.