Это хороший вариант использования для удобной функции регулярного выражения Oracle REGEXP_SUBSTR()
:
SELECT REGEXP_SUBSTR(sentence, '\d\.\D+$') FROM q;
Разбиение регулярного выражения:
\d -- a digit
\. -- a dot
\D+ -- as many non-digit characters as possible (at least one)
$ -- end of string
REGEXP_SUBSTR()
ищетстрока для a для заданного регулярного выражения и возвращает данный случай (первый случай по умолчанию).
Демонстрация на DB Fiddle :
WITH q AS (SELECT '1.abc def ghi 2.sdadasd. rewtretrtr1 3. hjgjhjhgj, yo whats. 4. gog mi man. Its been' AS sentence FROM DUAL)
SELECT REGEXP_SUBSTR(sentence, '\d\.\D+$') FROM q;
| REGEXP_SUBSTR(SENTENCE,'\D\.\D+$') |
| :--------------------------------- |
| 4. gog mi man. Its been |
РЕДАКТИРОВАТЬ
Оказывается, вы имеете дело с гораздо более сложными строками:
- часть для захвата может содержать числа
- строка может содержать новую строку
Поэтому я бы предложил новый подход, основанный на REGEXP_REPLACE()
для удаления нежелательной части строки.
Обратите внимание:
SELECT REGEXP_REPLACE(sentence, '.*\d+\.', '', 1, 0, 'n') FROM q;
Regexp .*\d+\.
будет ужасно соответствовать всему от начала строки до последнего вхождения цифры, за которой следуют точка и пробел.REGEXP_REPLACE
подавит эту часть строки.Модификатор 'n'
позволяет символу .
совпадать с символом новой строки.
С этим выражением вы получаете ожидаемую часть строки, только минус цифра (ы) и точка в начале(это так же хорошо, как это получается, поскольку Oracle не поддерживает просмотр в регулярном выражении ... вздох).
Демонстрация по БД Fiddle :
Учитывая эту входную строку:
We have received customer approval on the
warranty nozzle including revised ERO repairs. Please proceed with the repairs.
Please provide photos and damage mapping when complete per customer requests." 9/12/19 MH
10. CHECKING WITH VENDOR ABOUT ECD. 9/13/19
MH11. Per Vendor,
"Originally I quoted a 3-4 week delivery once approved. This month is shot. W
e are booked solid. We estimate a delivery date of 10/11" 9/13/19 MH
Запрос возвращает:
Per Vendor,
"Originally I quoted a 3-4 week delivery once approved. This month is shot. W
e are booked solid. We estimate a delivery date of 10/11" 9/13/19 MH