1

私は正規表現に非常に錆びていて、非常に単純なはずの何かをしようとして約2時間を費やしました。

基本的に、一連のファイル名をチェックできる正規表現が必要です(最終的な目標は、関係のないものを除外することです。これは、CassetteのFileSearchクラスを使用して不要なjavasciptファイルを除外するためです)。

私がこれまでに持っている表現は次のとおりです。

(^.+\.+min.js$) | (^Microsoft.$) | (^.+\.+min.js$) | (^.+vsdoc.js$)

一致させようとしているテキスト(ファイル名)は

jquery-ui-i18n.min.js

これはEspressoで機能しますが、実際にいくつかの.NETコードに対して実行すると、一致するものがありません。

    static void Main(string[] args)
{
  System.Text.RegularExpressions.Regex reg =
    new System.Text.RegularExpressions.Regex(@"(^.+\.+min.js$) | (^Microsoft.$) | (^.+\.+min.js$) | (^.+vsdoc.js$)", System.Text.RegularExpressions.RegexOptions.None);

  if (reg.IsMatch("jquery-ui-i18n.min.js"))
    Console.WriteLine("match");
  else
    Console.WriteLine("no match");

  Console.Read();
}

私に光を見せてくれる正規表現の伝説はありますか?

4

1 に答える 1

0

私は使うだろう

(\.min\.js|Microsoft.|\.min\.js|vsdoc\.js)$

あなたの正規表現には多くの欠点があります

(^.+\.+min.js$) | (^Microsoft.$) | (^.+\.+min.js$) | (^.+vsdoc.js$)
 -           -   -                      
 |           |   |->space would make ^ meaningless unless you use IgnorePatternWhiteSpace option 
 |           |->instead of repeating $ in each group you can keep it outside all the groups
 |->^ is not required because you only want to check the end
于 2013-02-20T06:37:32.160 に答える