Учитывая переменные:Perl регулярное выражение строится из значений переменных
my $var1 = "fish";
my $var2 = "ocean";
Мои входные строки могут быть либо fishin_ocean или fishout_ocean.
Как написать регулярное выражение Perl для соответствия как входным строкам, где части регулярного выражения находятся в $var1
и $var2
? Это одна (где строка находится в $var3
) не возвращает либо из вышеуказанных строк:
$var3 =~ /$var1.+?$var2/;
Edit от ответа OP в:
Я думаю, что это особый квадрат Braket в конце, что вызывает проблему
my $a = "slash_wideiscan"; my $b = "_mnn3h_reg[0]";
my @array1 = qw (slash_wideiscanps_mnn3h_reg[0]
slash_wideiscanptlr_mnn3h_reg[0]
slash_wideiscanps_mnn0h_reg);
for my $element (@array1) {
if ($element =~ /($a.+?$b)/) {
print "YES : $element\n";
} else {
print "NO : $element\n";
}
}
ответ, который вернулся был
NO : slash_wideiscanps_mnn3h_reg[0]
NO : slash_wideiscanptlr_mnn3h_reg[0]
NO : slash_wideiscanps_mnn0h_reg
Я на самом деле хочу
YES : slash_wideiscanps_mnn3h_reg[0]
YES : slash_wideiscanptlr_mnn3h_reg[0]
NO : slash_wideiscanps_mnn0h_reg
Что именно вы пытаетесь достичь? Оператор сопоставления не возвращает строку в скалярном контексте. – choroba
Добро пожаловать в StackOverflow. Обратите внимание, что мы ценим четкие вопросы. См. [FAQ] (http://stackoverflow.com/faq). Я отредактировал этот вопрос для вас, но я, возможно, неправильно понял, что вам нужно. Если это так, вы должны повторно отредактировать вопрос, чтобы он отражал то, что вы действительно спрашиваете. –
Вы должны использовать собственные имена для своих переменных. Это облегчит вашу жизнь. – TLP