불행히도 \b
오라클에서는 정규 표현식 문자가 작동하지 않습니다. 해결 방법으로오라클 11g 정규 표현식 문자
나는 다음과 같은 표현을 발견
(^|\s|\W)(100100|100101|100102|100103)($|\s|\W)
(참조 : The missing \b regular expression special character in Oracle.를)하지만, 테스트 문자열 데이터에 : 나는 동안
Test string 100100/100101, ABC-DEF, 100102 100103 test data abc100100 100100abc.
값 100101
및 100103
는 일치하지 그것들이 일치하는 것을 기대하는 것은 \b
표현의 경우입니다.
작동시킬 수있는 방법이 있습니까? Oracle 11g를 사용하고 있습니다.
나는 어떤 도움을 주시면 감사하겠습니다.
는 편집 :
내 목표는 모든 경기에 태그를하는 것입니다. 내가 기대하고 출력은이 목적에
Test string [ddd]100100[/ddd]/[ddd]100101[/ddd], ABC-DEF, [ddd]100102[/ddd] [ddd]100103[/ddd] test data abc100100 100100abc.
내가 다음 문을 사용하고 있습니다 :
regexp_replace(p_text,'(^|\s|\W)(' || l_ids || ')($|\s|\W)', '\1[ddd]\2[/ddd]\3');
을 여기서
l_ids
- ID 수|
에 의해 분리 된 ID의 목록 숫자, 문자, 밑줄 및 대시 포함- - 입력 텍스트
EDIT 2 : 상기 시험 문자열 값 100100
에서
는 단어뿐만 아니라 abc100100
100100abc
으로 일치되지 않아야한다.
다른 행에서 일치 항목을 출력 하시겠습니까? –
두 번째'(^ | \ s | \ W)'는'($ | \ s | \ W)'이어야합니다. 또한'\ s'는'\ W'에 이미 포함되어 있습니다. 첫 번째 숫자 다음에 나오는'/'는 첫 번째 패턴에 의해 소비되어 두 번째 일치를 위해 사용될 수 없으므로 미리보기 없이는 해결하기가 어렵습니다. –
@vkp 질문에 대한 나의 편집을 참조하십시오. – kpater87