perl 정규식에 관한 질문입니다.

환이의 이미지

저번에 큰 도움을 받아서 잘 해결하다가.. 또 막히는 부분이 있어 올려봅니다.

test 000
test 111
test 222
test 333

라는 문장이 있을때 333 이라는 패턴을 매칭하고자

=~ /\b333\b/ 이라는 정규식을 사용했었습니다. 헌데

print $&; 로 보니 저렇게 정규식을 이용해 패턴을 검색하면

333 <= 이렇게 밖에 안나오더군요.

여기서 test 333. 즉 333이 포함된 라인 전체를 변수에 넣으려면 어떻게 해야하나요?

Tony의 이미지

$& 를 쓰신다면 $` $'이런것도 있다는걸 아실텐데요...

inniskun의 이미지

print $`.$&.$';

모를수도 있져....

눈에 보이는 모든것은 보이지 않는 것들로 이루워져 있다.
Nobody reachs the Truth~*

눈에 보이는 모든것은 보이지 않는 것들로 이루워져 있다.
Nobody reachs the Truth~*

pung96의 이미지

$&,$',$` 를 쓰면 정규표현식 속도가 느려지기 때문에
한줄단위로 분석하는경우라면

변수 자체를 사용하면 되죠

if( $str =~ /\b333\b/ ){
print $str;
}

sephiron의 이미지

아무래도 grep()을 원하시는 것 같네요