Я использую приведенный ниже код из сценария bash для замены одинарных кавычек из столбца заголовка в базе данных postgres пробелами.
psql -U postgres -d my_database -c "UPDATE my_table SET title = regexp_replace(title, '''', ' ', 'g')"
Моя проблема в том, что я намеревался удалить одинарные кавычки вокруг строк, например, вот так:
this is example 'number one' ok
становится
this is example number one ok
Это работает, как я и надеялся. Однако он также удаляет одинарные кавычки внутри слов, поэтому:
can't
становится
can t
Как я могу указать, что я хочу заменить только одинарные кавычки вокруг строк.
Я не Не думаю, что есть хороший способ сделать это с помощью одной замены. Но если четыре замены подходят, выполните следующие действия:
Замените \ A '
на (то есть замените
'
в начале строки).
Замените '\ Z
на (то есть замените
'
в конце строки).
Глобально заменить ([^ [: alnum:]]) '
на \ 1
(то есть заменить каждую последовательность не буквенно-цифровых символов и '
не буквенно-цифровым символом и ).
Глобально заменить '([^ [: alnum:]])
на \ 1
(то есть заменить каждую последовательность '
и не- буквенно-цифровой символ на и не буквенно-цифровой символ.)
Чистый эффект заключается в замене каждого '
, кроме тех, которым предшествуют и , за которыми следует буквенно-цифровой символ.
Отказ от ответственности: я понятия не имею о PostgreSQL; вы должны сами перевести его в синтаксис PostgreSQL.