[ CnUnix ] in KIDS 글 쓴 이(By): 파란거북 (...) 날 짜 (Date): 2004년 7월 5일 월요일 오전 09시 30분 43초 제 목(Title): Perl regular expression 펄 레귤러 익스프레션 써서, 스크립트를 짜고 있는데, 이해되지 않는 로직에러가 발생해서, 제 궁금증을 보여주는 간단한 테스트 코드를 만들어봤습니다. 아래의 예시에서, 파일의 내용은 ============= ... ============= 의 ...에 해당되는 부분입니다. 어쨌든 궁금증의 내용은, [^\s"]+ 라는 expression이 whitespace나 따옴표가 아닌 character들의 하나 혹은 그 이상의 나열이어야 하는데, 뭔가 문제가 있어서요. try.pl ================ #!/usr/bin/perl open TEST, "<testfile"; while(defined($line=<TEST>)) { print "line is :$line"; if ($line =~ m%([^\s"]+)%) { print "good girl\n"; print $1; } else { print "not nice\n"; } } ================= testfile ================= <a href="abc">IBM</a> <a href="efg">IBM</a> ================= 이렇게 파일 만들고, perl try.pl 이라고 치면, good girl 이 프린트되기를 기대하는데, not nice 가 프린트 됩니다. 많은 도움 부탁드립니다. (참고로 위의 regular expression에서 \s 대신 그냥 스페이스 하나를 쓰면 제대로 working합니다. 참고로, 펄은 리눅스 9에 깔린, v5.8.0 이라고 되어있습니다. |