PostgreSQL regex - проверяет строку на наличие неэкранированных специальных символов - PullRequest
0 голосов
/ 13 декабря 2018

ОК, этот вопрос может показаться дубликатом, но имейте в виду, что 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.

...