Удалить специальные символы и добавить точку с запятой в слове - Таблица - PullRequest
0 голосов
/ 05 июня 2019

Мне нужно удалить специальные символы в начале и конце каждого слова.Но есть несколько слов, где это становится сложно.Кстати, я работаю в таблице.

Слово:

;#Bank#;Server#;

Я использовал

REGEXP_REPLACE([Category], "[^0-9a-zA-Z ]+", "")

Используя этот код, слово становится BANKSERVER.Я хочу запятую или точку с запятой между Bank и server.Как мне этого добиться?Будем весьма благодарны за любые возможные выводы.

Фактический результат:

BANKSERVER

Ожидаемый результат:

BANK,SERVER

или

BANK;SERVER

В качестве альтернативы,Если я добавлю точку с запятой в код регулярного выражения:

REGEXP_REPLACE([Category], "[^0-9a-zA-Z ;]+", "")

Однако вывод будет следующим:

;BANK;SERVER;

Ответы [ 3 ]

2 голосов
/ 05 июня 2019

Вы можете использовать

REGEXP_REPLACE(REGEXP_REPLACE([Category], '[^0-9a-zA-Z ]+', ';'), '^(?:\s*;)+\s*|\s*(?:;+\s*)+$|\s*(?:(;)+\s*)+', '$1')

Подробности

  • REGEXP_REPLACE([Category], '[^0-9a-zA-Z ]+', ';') - заменяет все символы, кроме буквенно-цифровых и пробелов, на ; символы
  • REGEXP_REPLACE(..., '^(?:\s*;)+\s*|\s*(?:;+\s*)+$|\s*(?:(;)+\s*)+', '$1') - удаляет начальные / конечные точки с запятой и сжимает 1+ точки с запятой с одной точкой с запятой, а также удаляет все пробелы.
2 голосов
/ 05 июня 2019

Просто добавьте точку с запятой в класс символов:

REGEXP_REPLACE([Category], "[^0-9a-zA-Z; ]+", "")
//                              here __^
0 голосов
/ 08 июня 2019

Удалить все специальные символы в конце и начале строки, а затем заменить разделители

Это похоже на решение Виктора и использует его подход, чтобы дважды пройти через строку.

  1. Сначала очистите строку в начале и в конце, используя жадные квантификаторы с минимальным соответствием единице.

'(^[^a-zA-Z0-9]+)|([^a-zA-Z0-9]+$)'

  1. Жадно очищайте специальные символы «разделитель» минимальным квантификатором 1, заменяя его символом ,.

'([^a-zA-Z0-9]+)'

Решение: REGEXP_REPLACE (REGEXP_REPLACE([Word], '(^[^a-zA-Z0-9]+)|([^a-zA-Z0-9]+$)', '' ), '([^a-zA-Z0-9]+)' , ',')

enter image description here

...