간단히 말해서 누락되었지만 s///
은 변경된 문자열을 내 변수에 할당하지 않습니다. 나는 더 간단한 s///
을 시도하고 그것이 효과가있다.Mastering Regular Expressions의 Perl 대체 예가 저에게 맞지 않습니다
이 예에서는 4 자리 이상인 경우 소수 자릿수 뒤에 임의의 자릿수를 잘라야합니다.
my $price = 12.34567;
print "$price\n";
$price =~ s/(\.\d\d[1-9]?)d*/$1/;
print "$1\n"; # This is printing .345 correctly.
print "$price\n"; # This should be 12.345 but is unchanged.
my $story = "dog";
$story =~ s/(do)g/$1/;
print "$story\n"; # This works. It's changed to "do"
편집 : 세 번째 숫자가 0이면 두 자리 다음에 자릅니다. 주식 가격 꾸미는데
" 을 ... 다른 숫자를 제거, 항상 소수점 처음 2 자리 숫자를 가지고, 그것은 0이 아닌 경우에만 세 번째 자리를 취할 다음
될해야'\ d' 대신 d''의. –
백 슬래시가 누락 된 것 외에도 RE는 제대로 보이지 않습니다.'12.34'에 대해 예상되는 결과는 무엇입니까? –
그게 전부 였어. 고맙습니다. @Benjamin W. – user3064085