Использование regexp_replace для заменить одинарные кавычки вокруг строки, но не внутри слов, напримерне могу

Я использую приведенный ниже код из сценария 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

Как я могу указать, что я хочу заменить только одинарные кавычки вокруг строк.

0
23.05.2016, 19:29
1 ответ

Я не Не думаю, что есть хороший способ сделать это с помощью одной замены. Но если четыре замены подходят, выполните следующие действия:

  1. Замените \ A ' на (то есть замените ' в начале строки).

  2. Замените '\ Z на (то есть замените ' в конце строки).

  3. Глобально заменить ([^ [: alnum:]]) ' на \ 1 (то есть заменить каждую последовательность не буквенно-цифровых символов и ' не буквенно-цифровым символом и ).

  4. Глобально заменить '([^ [: alnum:]]) на \ 1 (то есть заменить каждую последовательность ' и не- буквенно-цифровой символ на и не буквенно-цифровой символ.)

Чистый эффект заключается в замене каждого ', кроме тех, которым предшествуют и , за которыми следует буквенно-цифровой символ.

Отказ от ответственности: я понятия не имею о PostgreSQL; вы должны сами перевести его в синтаксис PostgreSQL.

0
28.01.2020, 04:50

Теги

Похожие вопросы