Perl RegEx 与一个或多个任何字符的麻烦



这是我的正则表达式:

^.+/.+.sql.+$

它匹配

/somedir/abc.sql.20121212

但它不匹配

/somedir/abc.sql20121212 
/somedir/abc.sql_20121212

我做错了什么? sql.+$不应该意味着匹配"sql"和它之后的至少一个字符吗?

更新:上述正则表达式确实有效。 我得到了意想不到的结果,因为我没有保存存储正则表达式的配置文件(DUH !!! 前一个值是^.+/.+.sql..+$这意味着必须是"sql.",并且它后面至少有一个字符。 对不起,误惊一场。

实际上,它们确实匹配:

print "$_: ", /^.+/.+.sql.+$/ ? 'match' : 'no match', "n"
   for qw(
      /somedir/abc.sql.20121212
      /somedir/abc.sql20121212 
      /somedir/abc.sql_20121212
   );

输出

/somedir/abc.sql.20121212: match
/somedir/abc.sql20121212: match
/somedir/abc.sql_20121212: match

最新更新