2012-07-17 2 views

ответ

0

Скобки в строке соответствия, $ y, интерпретируются как группировка или захват. Они должны быть «экранированы», чтобы их можно было рассматривать как нормальных персонажей.

Введите следующий код после назначения $ y.

$y =~ s/\(/\\(/g; # escape left parens 
$y =~ s/\)/\\)/g; # escape right parens 

The 's' предназначен для 'замены'.
«g» предназначен для «глобальной» замены. I.e., замените все вхождения в строке.

+0

Это работает. Спасибо –

+0

Добро пожаловать! (Добро пожаловать в StackOverflow! На этом этапе вы должны «принять» мой ответ, чтобы поддержать меня ...; ^) – marklark

1

использование quotemeta:

my $x="Enzyme(s)"; 
my $y="Enzyme(s)"; 
$y = quotemeta($y); 
if ($x =~ /^$y$/){print "String Matches"}; 
0

Вы должны использовать quotemeta, как M42 уже упоминалось, или, чтобы избежать дополнительной строки кода и постоянное изменение переменной $ у, вы можете использовать \Q...\E в регулярных выражениях, которые отключают все метасимволы рисунка в пределах диапазона:

my $x="Enzyme(s)"; 
my $y="Enzyme(s)"; 
if ($x =~ /^\Q$y\E$/){print "String Matches"}; 
Смежные вопросы