간단한 정규식 질문입니다
글쓴이: 우수한 / 작성시간: 화, 2005/04/12 - 6:33오후
PHP의 preg_split를 이용해 문자열을 분리하는데 (perl의 split와 같습니다.)
\a, \b 는 이용하지 않고 a, b 문자만 이용해서 구분하려고 합니다.
괄호는 여러개 쓸 수 없습니다. (괄호를 여러개 쓰면 모든 괄호 안의 문자를 다 분리합니다.)
가령 "-\aaA\A\a\A \bBb" 라는 문자열이 있다고 할 경우,
원하는 결과는
[0] => -\a
[1] => a
[2] => A\A\a\A \bB
[3] => b
입니다.
a,b를 제외한 나머지 문자로 구분을 하기 위해 /([\\\[ab]]*[^ab]+)/ 패턴을 사용했더니
[0] => -\a
[1] => aA\A\
[2] => a\A \
[3] => bB
[4] => b
이런 식이고,
a,b를 이용해 구분을 하기 위해 /([^\\\][ab])/ 패턴을 사용했더니
[0] => -\
[1] => aa
[2] => A\A\a\A \b
[3] => Bb
이런 식이군요.
어떻게 하면 될까요?
Forums:
perlre 문법과 같다면 아래처럼 해 보세요.[code:1](
perlre 문법과 같다면 아래처럼 해 보세요.
(?<!\\)[ab]
a 또는 b 앞에 '\' 가 오지 않는 문자(열)를 매치합니다. 그리고 괄호 때문에 reference 가 발생하는 문제라면
(?imsx-imsx:pattern)
고려해 보시면 좋을 듯 합니다. php 에서도 완전히 동일하게 동작하는지는 모르겠네요.
War doesnt determine whos right, just whos left.
덕분에 해결했습니다.
감사합니다.
/((?<!\\)[ab])/ 이게 작동하는군요.
정규식.... 다시 공부해야겠습니다.
우수하지 않아요. '우수한'은 옛날 만화 CityHunter에서 따와서 쓰던 별명. ;-)
댓글 달기