Я изо всех сил пытаюсь придумать регулярное выражение в Perl, чтобы соответствовать строке с необязательными префиксами и суффиксами.perl matching optional regex
Вот мое выражение до сих пор:
my $string = "prefix1_foo_suffix2";
if ($string =~ m/^(prefix1_|prefix2_)?(prefix3_|prefix4_)?foo|bar(_suffix1|_suffix2)?$/) {
print "match"
};
Так что это должно соответствовать строки как
prefix1_foo_suffix2
prefix1_prefix4_bar
bar_suffix2
но не
prefix1_baz_suffix2
bar_suffix42
Насколько я могу судить, хотя, это соответствует любому суффиксу (т. е. что угодно после «foo» или «bar»). Любые идеи о том, что я сделал неправильно?
Это будет потому, что это необязательно, другими словами: все, что должно соответствовать, - ** foo | bar ** и * bar_suffix42 *. Я был бы удивлен, если бы prefix1_baz_suffix2 сделал, хотя, поскольку baz не является частью вашего необходимого соответствия. – tink