정규식관련 1 8 2,030

by 당직하사 [2014.01.14 14:39:43]


특정 문자열에 대하여 정규식으로 TRUE/FALSE를 처리하고 싶습니다.

문자열의 일반 형태는
ABRBRBDS 입니다.

시작문자 - A 또는 B -> A는 생략가능
반복문자 - RB가 순차적 반복 (생략가능하나 R이 있으면 반드시 B도 있어야 함)
끝문자 - D, S 기재

(문자열 예)
A - 정상
AR - 오류 (시작문자 B 누락)
AB - 정상
BR - 정상
R - 오류 (시작문자 B 누락)
BRB - 정상
BDS - 정상 
ABDS - 정상
BRBRD - 오류 (끝자리 D앞에 반복문자 RB에서 R이 있으나 B가 빠졌음)
BRBRBD - 정상
BRBDS - 정상
BRBS - 오류 (D누락)

해당 문자열의 체크를 REGEXP_LIKE로 체크를 수행할 수 있을까요?
by 용근님 [2014.01.14 15:15:03]
정상적인 패턴이 아닌거 같습니다.

패턴으로 한다고 해도 굉장히 복잡해질꺼 같습니다.

by 당직하사 [2014.01.14 15:25:28]
다른 방법을 찾아보려
하고 있네요..
답변 감사합니다.

by Oracler [2014.01.14 19:39:52]
두번째 AR은 시작문자 B 누락 때문이 아니라 R 다음에 B가 빠져서 오류인거죠?

by Oracler [2014.01.14 21:25:27]
첫번째 조건은 'A 또는 B로 시작하되 둘 중 하나는 반드시 있어야 하며 A가 B보다 먼저 나와야 한다'라고 하는게 맞겠네요.
B가 A보다 먼저 나와도 되나요?

by 당직하사 [2014.01.15 11:23:52]
답변 감사합니다.

by 마농 [2014.01.14 22:55:24]
BR 은 왜 정상인가요?
그리고 예시가 많이 부족하네요.
B
D
S
DS
RB

by 마농 [2014.01.15 09:31:29]
WITH t AS
(
SELECT 'ABRBRBDS' v FROM dual
UNION ALL SELECT 'A' FROM dual
UNION ALL SELECT 'AR' FROM dual
UNION ALL SELECT 'AB' FROM dual
UNION ALL SELECT 'BR' FROM dual
UNION ALL SELECT 'R' FROM dual
UNION ALL SELECT 'BRB' FROM dual
UNION ALL SELECT 'BDS' FROM dual
UNION ALL SELECT 'ABDS' FROM dual
UNION ALL SELECT 'BRBRD' FROM dual
UNION ALL SELECT 'BRBRBD' FROM dual
UNION ALL SELECT 'BRBDS' FROM dual
UNION ALL SELECT 'BRBS' FROM dual
UNION ALL SELECT 'B' FROM dual
UNION ALL SELECT 'D' FROM dual
UNION ALL SELECT 'S' FROM dual
UNION ALL SELECT 'DS' FROM dual
UNION ALL SELECT 'RB' FROM dual
)
SELECT v
     , CASE WHEN REGEXP_LIKE(v, '^(A|B|AB)?(RB){0,}(D|DS)?$')
            THEN 'O' ELSE 'X' END ox
  FROM t
;

by 당직하사 [2014.01.15 11:23:38]
정신이 없어서 이제사 확인햇네요..
답변 감사드립니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입