2015-05-05 3 views
-1

Каков правильный синтаксис RegEx для разделения на обратную и прямую косую черту?Подстрока регулярного выражения, если обратная и прямая косая черта « /»

Для Oracle я пробовал:

строка

word1\/word2\/word3 

regexp_substr(string, '[^"\\/"]+', 1, 1) first 

, но он не работает правильно

+0

Что желаемый результат для данного вход? – 54l3d

+0

Желаемый результат был бы первым: word1 – user1786096

ответ

0

Вы используете класс символов [^"\\/"]; который выбирает все символы, которые не находятся в {", /, \}. Это, вероятно, не то, что вы хотите.

Вместо этого попробуйте

`.*?(\\/|$)` 

Это будет совпадать с \/ или в конце строки, что наступит первым. Обратите внимание, что \/ будет включен в игре, так как regexp_substr для Oracle не поддерживается утверждения lookahead.

+0

Спасибо, это работает лучше, но теперь каждый субстрин заканчивается \/как мы можем избежать этого? – user1786096

+0

Например, вы можете поменять строку или замену регулярным выражением. – nneonneo

+0

Что ты имеешь в виду? – user1786096

0

Если вы хотите, чтобы все слова, которые вы могли бы просто заменить \/ с space:

select REPLACE ('word1\/word2\/word3','\/',' ') "changes" FROM dual 

Или, если вы хотите только первое слово:

select REGEXP_SUBSTR('word1\/word2\/word3', '[^\\^/]+') "changes" FROM dual 
Смежные вопросы