펄의 정규표현식에서 어디가 잘못됬는지 모르겠군요..
글쓴이: lkjt / 작성시간: 화, 2004/08/31 - 8:19오후
대상 문자열 : "[bciu_cr=red] HI [/]"
정규 표현식 : "/\[([bciu]*(_cr=.+?|)(_lk=.+?|))\](.+?)\[\/\]/i"
출력 : "\\1<br>\\2"
그러나 출력은 이럿습니다.
bciu_cr=red
_cr=red
PHP의 펄호환 정규 표현식 입니다.
\\2에는 HI 라고 나와야 하는데,,, 어디가 잘못된거죠..?
Forums:
Re: 펄의 정규표현식에서 어디가 잘못&#46124;는지 모르겠군
정규 표현식 : "/\[([bciu]*(_cr=.+?|)(_lk=.+?|))\](.+?)\[\/\]/i"
출력 : "\\1<br>\\4"
가 되어야 합니다. 그리고 정규식도 별로 좋지 않네요.
/\[([^_]+(_cr|_lk)=[^\]]+)\]([^\[]+)\[\/\]/i
가 좀더 깔끔하겠군요.
너무 어렵다면.. 님의 식중에서 잘못된 부분만 수정해 보죠.
/\[(bciu(_cr|_lk=[^\]]+))\]([^\]]+)\[\/\]/i
가 되어야 합니다. 특히 식 중에서 .+? 의 표현은 아주 잘못된 식입니다.
또한 처음의 [bciu]* 역시 잘못된 식이죠. .+? 의 식은 아예 잘못된 식이며,
[bciu]* 의 의미는 b또는 c 또는 i 또는 u 가 0개 이상 있을 경우입니다.
즉, bbbbbbbbuuuuiiiiicccc 도 걸린다는 얘기이죠.
Re: 펄의 정규표현식에서 어디가 잘못&#46124;는지 모르겠군
perl 스타일의 정규표현식에서 .+? 또는 .*?는 greedy matching을 사용하지 않도록 하는 식입니다.
Re: 펄의 정규표현식에서 어디가 잘못&#46124;는지 모르겠군
[^_]+은 _아닌 모든 문자 아닌가요?
댓글 달기