Perl RegEx与一个或多个char的问题

时间:2012-12-13 00:15:47

标签: regex perl

这是我的正则表达式:

^.+\/.+\.sql.+$

匹配

/somedir/abc.sql.20121212

但不匹配

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

我做错了什么?不应该sql.+$意味着匹配'sql'以及其后的任何字符中的至少一个吗?

更新:上述正则表达式确实有效。我得到了意想不到的结果,因为我没有保存存储正则表达式的配置文件(DUH !!)之前的值是^.+\/.+\.sql\..+$,这意味着必须是'sql'。以及其后的任何一个角色中的至少一个。抱歉误报。

1 个答案:

答案 0 :(得分:2)

实际上,它们匹配:

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