这是我的正则表达式:
^.+\/.+\.sql.+$
匹配
/somedir/abc.sql.20121212
但不匹配
/somedir/abc.sql20121212
/somedir/abc.sql_20121212
我做错了什么?不应该sql.+$
意味着匹配'sql'以及其后的任何字符中的至少一个吗?
更新:上述正则表达式确实有效。我得到了意想不到的结果,因为我没有保存存储正则表达式的配置文件(DUH !!)之前的值是^.+\/.+\.sql\..+$
,这意味着必须是'sql'。以及其后的任何一个角色中的至少一个。抱歉误报。
答案 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