0
我很努力想在Perl中使用正则表达式来匹配带有可选前缀和后缀的字符串。perl匹配可选正则表达式
这里是我的表情至今:
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 2013-03-19 23:48:16