1

これは私の正規表現です:

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

一致します

/somedir/abc.sql.20121212

しかし、それは一致しません

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

私は何が間違っているのですか?sql.+$'sql'とそれに続く文字の少なくとも1つに一致することを意味するべきではありませんか?

更新:上記の正規表現は実際に機能します。正規表現が保存されている構成ファイルを保存していなかったため、予期しない結果が得られました(DUH !!)以前の値は^.+\/.+\.sql\..+$、「sql」である必要があることを意味します。そして、その後の任意の文字の少なくとも1つ。誤警報でごめんなさい。

4

1 に答える 1

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
于 2012-12-13T00:24:50.003 に答える