정규 표현식 도와 주세요
글쓴이: h2ogid / 작성시간: 목, 2014/08/07 - 5:58오후
파이프 "|" 가 구분자로
YYYYMM|ADGA|13AA-34D|CCC
YYYYMM|ASFA|54AB-33A|CCC
YYYYMM|AAKA|87AC-13W|CCC
YYYYMM|BAAA|35AD-989|CCC
YYYYMM|AABA|98AE-23F|CCC
.....
이런 식으로 되어 있을 떄
3번 째 필드에 AB 나 AD 가 아닌것만 읽고 싶습니다.
[^("|\d+AB\w+-\w+|")|("|\d+AD\w+-\w+|")] 로 했는데 인식을 못합니다.
어떤게 잘못된 부분 일까요?
Forums:
\d+(?!A[BD])[A-Z]+
YYYYMM\|[A-Z]{4}\|\d+(?!A[BD])[A-Z]+-[A-Z0-9]+\|CCC
이런 걸 바라시는 건가요? PCRE용으로 짜봤습니다. (캡쳐하는 내용은 넣지 않았습니다.)
답은 Prentice님이 올려주셨고..어떤게
답은 Prentice님이 올려주셨고..
어떤게 잘못인 부분일까요라는 질문에 답을 하자면,
어떤 문자열에 ab 라는 문자열이 포함되어 있는지 검사하는 정규식은 /ab/ 이지만 ( 앞뒤 /는 그냥 정규식임을 나타내려고 붙였습니다)
어떤 문자열에 ab 라는 문자열이 포함되지 않았는지를 알기 위해서 쓰는 정규식은 /[^ab]/가 아닙니다.
이 정규식은 "a나 b가 아닌 문자 하나"를 의미하죠.
게다가 [ ] 안에서 괄호나 | 등은 메타 문자가 아니라 그냥 리터럴로 해석되니까 본문의 정규식은
"괄호나 따옴표나 파이프나 숫자나 +나 A나 B나 ... 가 아닌 문자 하나"를 의미할텐데 \w와 \d에 해당되는 알파벳 숫자들 죄다 제외하고 남은 문자들 중 저 데이타에 들어있는 게 없을 것 같군요.
좋은 하루 되세요!
댓글 달기