Oracle – удаление конечных символов из строки с использованием регулярного выражения

Вопрос: Я хотел бы удалить завершающие символы из строки, используя регулярное выражение Oracle. Мои данные выглядят так: TDC Supervisor # TDC Supervisor ## TDC Supervisor ### Store Manager - 1 Store Manager - 2 Store Manager - 3 Stockroom Clerk Flexi 100 Hrs Sales Consultant Flexi 120 Hrs Service Desk Consultant (5 Day) Secretary Я

Вопрос:

Я хотел бы удалить завершающие символы из строки, используя регулярное выражение Oracle.

Мои данные выглядят так:

TDC Supervisor # TDC Supervisor ## TDC Supervisor ### Store Manager — 1 Store Manager — 2 Store Manager — 3 Stockroom Clerk Flexi 100 Hrs Sales Consultant Flexi 120 Hrs Service Desk Consultant (5 Day) Secretary

Я хотел бы избавиться от завершающих # и — 1, но не 120 Hrs и 5 Day. Есть ли способ сделать это, используя регулярное выражение Oracle. Не уверен, следует ли использовать REGEXP_SUBSTR или REGEXP_REPLACE.

Поэтому в основном я хотел бы сделать отчет, который возвращает:

TDC Supervisor Store Manager Stockroom Clerk Flexi 100 Hrs Sales Consultant Flexi 120 Hrs Service Desk Consultant (5 Day) Secretary Лучший ответ:

Хэши в конце удаляются с #+$ (# для хэша, + для одного или более, $ для конца строки)

Числа удаляются с помощью — *d+$ (- для минус, * для ноль или более пробелов, d+ для одной или нескольких цифр.

Вы можете комбинировать оба с parens: (#+$)|(- *d+$).

Ноль или больше пробелов удаляются с помощью * (или s* чтобы поймать другие пробелы, такие как вкладки и т.д.), Поэтому окончательное регулярное выражение выглядит как s*(#+$)|(-s*d+$).

CREATE TABLE mytable (mycolumn VARCHAR2(50)); INSERT INTO mytable VALUES (‘TDC Supervisor #’); INSERT INTO mytable VALUES (‘TDC Supervisor ##’); INSERT INTO mytable VALUES (‘TDC Supervisor ###’); INSERT INTO mytable VALUES (‘Store Manager — 1’); INSERT INTO mytable VALUES (‘Store Manager — 2’); INSERT INTO mytable VALUES (‘Store Manager — 3’); INSERT INTO mytable VALUES (‘Stockroom Clerk Flexi 100 Hrs’); INSERT INTO mytable VALUES (‘Sales Consultant Flexi 120 Hrs’); INSERT INTO mytable VALUES (‘Service Desk Consultant (5 Day)’); INSERT INTO mytable VALUES (‘Secretary’); select distinct regexp_replace(mycolumn,’s*(#+$)|(-s*d+$)’) from mytable; Service Desk Consultant (5 Day) Store Manager TDC Supervisor Secretary Sales Consultant Flexi 120 Hrs Stockroom Clerk Flexi 100 Hrs Ответ №1

regexp_replace(string, ‘s*(-s*d+|#+)$’)
играть на скрипке

Оцените статью
Добавить комментарий