Regexp, как получить строку между двойными сл sh? - PullRequest
1 голос
/ 11 февраля 2020

Как получить всю строку до второго двойного слэ sh (//)

Пример текста: "C # // текст с любыми символами * / \ четные цифры 97878 // Прочее не ' не нужен текст. .

Спасибо!

Ответы [ 3 ]

3 голосов
/ 11 февраля 2020

Вы сказали:

Как получить всю линию до второго двойного слэ sh (//)

Если это так, вы не нужны регулярные выражения; substr + instr комбинация способна сделать это:

SQL> with test (col) as
  2    (select 'C#//text with any symbols */\ even digits 97878//Other don''t need text' from dual)
  3  select substr(col, 1, instr(col, '//', 1, 2) - 1) result
  4  from test;

RESULT
-----------------------------------------------
C#//text with any symbols */\ even digits 97878

SQL>

instr(col, '//', 1, 2) говорит:

  • строка поиска (col в этом примере) для двойного сл * sh //
  • начиная с 1 -ой позиции в строке
  • и находя 2 -й вид
1 голос
/ 11 февраля 2020

@ Littlefoot ответ с использованием SUBSTR и INSTR - простое (и лучшее) решение, но если вы хотите использовать регулярное выражение, вы можете использовать REGEXP_REPLACE для удаления все после и включая второе //:

with test (col) as
    (select 'C#//text with any symbols */\ even digits 97878//Other don''t // need text' from dual)
SELECT REGEXP_REPLACE(col, '^(.*?//.*?)//.*$', '\1') result
FROM test

Вывод:

RESULT
C#//text with any symbols */\ even digits 97878

Демонстрация на dbfiddle (включая ответ @Littlefoot)

0 голосов
/ 11 февраля 2020

Если вы действительно хотите сделать это с регулярным выражением, вы можете использовать

REGEXP_SUBSTR(TEXTVAL, '(.*\/\/.*)\/\/', 1, 1, NULL, 1)

db <> fiddle здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...