당신은에 패턴을 확장 할 수있다.
select regexp_replace('Helloworld - test0 - test!' ,'(.*)(-)(.*)(-)(.*)$', '\3\4\5')
from dual;
REGEXP_REPLAC
-------------
test0 - test!
그러나 당신은 당신이 적어도 두 -
구분이가 아는 한, 정규 표현식이 필요하지 않습니다 : (!이 아마 단순화 할 수있다)
또한 다시 참조와 regexp_replace()
을 사용할 수 있습니다 instr()
으로 substr()
를 사용할 수 있습니다
select substr('Helloworld - test0 - test!',
instr('Helloworld - test0 - test!', ' - ', -1, 2) + 3)
from dual;
SUBSTR('HELLO
-------------
test0 - test!
instr()
수를 뒤로 문자열의 끝에서 (때문에 세 번째 인수로 -1
의) , 두 번째 외모를 찾아서 d
바로 뒤에 놓습니다. 그런 다음 세 개를 추가하여 구분 기호 위로 되돌아 가서 원하는 비트의 시작을 찾으십시오.
당신이 실제로 (당신이 코멘트에 제안() 문제가 말한대로) 항상 마지막 두 개의 토큰을 얻기보다는, 첫 번째 토큰을 건너 뛰고 싶은 경우에, 심지어 쉽게 :
select substr('Helloworld - test0 - test!',
instr('Helloworld - test0 - test!', ' - ', 1, 1) + 3)
from dual;
SUBSTR('HELLO
-------------
test0 - test!
또는 두 번째 문자열 : 당신이 선호하는 경우가 일반적으로 더 비싼 비록
select substr('welcome - to - stackoverflow - test!',
instr('welcome - to - stackoverflow - test', ' - ', 1, 1) + 3)
from dual;
SUBSTR('WELCOME-TO-STACKOV
--------------------------
to - stackoverflow - test!
당신은 여전히, regexp_replace()
를 사용할 수 있습니다
당신은 그냥 대시에 분할 할 경우 0
select regexp_replace('Helloworld - test0 - test!', '^[^ -]+ - ', null, 1, 1)
from dual;
REGEXP_REPLAC
-------------
test0 - test!
select regexp_replace('welcome - to - stackoverflow - test!', '^[^ -]+ - ', null, 1, 1)
from dual;
REGEXP_REPLACE('WELCOME-TO
--------------------------
to - stackoverflow - test!
하지 공간 대시 공간은, 그 다시 간단합니다. 당신은 또한 트림을 추가해야합니다 뒤에 잎 선행 공백을 제거하려면하지만 없애 :
ltrim(substr(your_string, instr(your_string, '-', 1, 1) + 1))
나 :
ltrim(regexp_replace(your_string ,'^[^-]+-', null, 1, 1))
또는 제거를의 한 부분으로 패턴 :
regexp_replace(your_string ,'^[^- ]+ ?- ?', null, 1, 1)
등
감사 알렉스! 질문이 하나 더 있습니다. 문자열을 분할 한 후 첫 단어를 고려하고 싶지 않습니다. 그래서, 첫 단어를 고려하지 않고 쿼리가 있으면 알려주시겠습니까? – user3282682
죄송합니다, 무슨 뜻인지 모르겠군요. 마지막 두 개의 구분 된 요소가 필요하다고 했잖아요.이 모든 것들이 당신이 원하는 출력물을 만들어내는 것처럼 보입니다. –
필자의 요구 사항은 첫 번째 delimeter "-"뒤에 delimeter "-"가있는 모든 단어를 표시해야합니다. 예를 들어 welcome-to-stackoverflow -test는 항상 welcome이라는 단어를 고려하지 않고 -stackoverflow -test에 동적으로 표시하려고합니다. – user3282682