[PERL] 하나의 정규 표현식으로 복수개의 아이템 치환하기

CS/Shell/Perl/Python 2011.03.14 16:42
원문 : StackOverflow
참고 : 

#!/usr/bin/perl

use strict;
use warnings;

my %replace = (
    quick => "slow",
    lazy  => "energetic",
);

my $regex = join "|", keys %replace;
$regex = qr/$regex/;

my $s = "The quick brown fox jumps over the lazy dog";

$s =~ s/($regex)/$replace{$1}/g;

print "$s\n";


참고. $1 에 대해서:
/A(dam|nne|ndrew)/
와 같은 정규식이 있다고 할때, $1이 생성되고, 이는 dam, nne, ndrew등의 값을 가지게 된다. 만약 이후에 괄호가 있다면 그에 일치하는 값이 $2, $3, ...의 변수에 할당된다.

/A(?:dam|nne|ndrew)/
와 같이 ?:를 사용할 경우 해상 괄호에 대해서는 그에 일치하는 변수를 생성하지 않는다.

Trackback 0 : Comment 1

티스토리 툴바