2015-02-25 5 views
0

Кто-нибудь знает, как заменить только первый матч вместо всех в perl. Если я использую без/g, он заменяет все.найти и заменить только первое совпадение в perl

$string =~ s/regex/replacement/; 
+4

Это заменяет только первый матч. Пожалуйста, покажите пример, который воспроизводит вашу проблему. – Mat

+3

Ваше заявление неверно. Если вы ** используете ** с флагом 'g', он ** будет ** заменять все. В противном случае, только первое совпадение. – hwnd

+1

's/search/replace /' заменяет только первое совпадение. Для получения дополнительной информации вы можете показать нам свой код, что вы пытаетесь. – serenesat

ответ

1
use strict; 
use warnings; 

my $string = 'foo bar baz foo foo bar'; 
my $replace = 'bar'; 

$string =~ s/$replace/REPLACEMENT/; 

print "$string\n"; 

Или использовать \Q автоматически избежать символы не слова:

$string =~ s/\Q$replace/REPLACEMENT/;