반응형
perl 을 배우고 쓰는 여러가지 이유가 있겠지만, 그 중에서 가장 큰 (그리고 매력적인) 포인트는 정규표현식이다. 원래 정규 표현식은 perl 만의 것은 아니지만, perl 에서 완성이 됬다고 해도 과언이 아닐 정도면, 이후에 나온 대부분의 언어에서도 perl-style 정규표현식을 따로 지원할 정도로 정규표현식의 standard 의 위치에 있다.
perl 에서 기본적인 정규표현식의 matching 은 다음과 같이 이루어진다.
my $s = "this is line of text"
if ( $s =~ /line/ ){
say "true"
}
매칭 연산자는 =~ 이며 이후 나오는 문자열과 매칭이 되면 참 / 매칭이 되지 않으면 거짓을 반환한다.
하지만 그 보다 더 자주 사용되는 것은 와일드카드 ( ? , * , . 과 같은)로 매칭된 문자열을 추출 extract 하는 것인데, perl 의 경우 matching 된 순서대로 이를 $1, $2, $3... 에 저장한다.
또한 만약 이를 array로 받고 싶으면
my @array = $s =~ /i(.)/g
이런식으로 사용할 수 있다. (g -> global을 의미한다.)
또한 정규 표현식은 종종 문자열을 치환 (replace) 하기 위해 사용되기도 하는데, 이 경우에는 단순히
$s =~ s/line/string/;
이렇게 앞에 s/ 를 사용해서 치환을 할 수 있다.
이를 응용하면, 다음과 같이 복잡한 정규표현식도 사용할 수 있는데
my $n = 1234663123145;
while ( $n =~ s/^(-?\d+)(\d{3})/$1,$2/){}
say $n;
이는 숫자의 1000단위 마다 쉼표를 넣어주는 정규표현식으로, 처음에는 굉장히 복잡해보이지만, perl 특유의 아주 간단한 한 줄로 처리되는 코드를 보여주는 좋은 예가 될 것이다.
반응형
'Perl-공부하기' 카테고리의 다른 글
[perl] xargs 를 활용한 파일 이름 변경 예제 (0) | 2021.08.09 |
---|---|
Perl Tutorial - 4. Count Lines 3 (0) | 2020.12.31 |
Perl tutorial - 3. Count lines 2 (0) | 2020.12.31 |
Perl Tutorial - 2. Count Lines (0) | 2020.12.28 |
Perl Tutorial 01 - Hello world (0) | 2020.12.20 |