2013-02-20 50 views
1

我對我的正則表達式很生鏽,花了大約2個小時試圖做一些應該很簡單的事情。檢查幾個選項的文本

基本上,我想要一個正則表達式來檢查一堆文件名(最終目標是排除不相關的 - 這是爲了使用Cassette中的FileSearch類來排除不必要的javascipt文件)。

我到目前爲止的表現是:

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

,我想匹配的文本(文件名)是

jquery-ui-i18n.min.js 

這個工作在咖啡,但是當我真正運行它反對一些.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(); 
} 

是否有任何正則表達式傳說可以顯示我e光!?

+1

你重複爲什麼'(^ + \ + min.js $)在你的正則表達式'兩次?爲什麼在''''之後有一個空格並且在某個'之前'('。 – 2013-02-20 06:33:01

+0

什麼是'Microsoft.' – Anirudha 2013-02-20 06:37:58

+0

@Rohit你的回答是正確的。也就是說,空格(我知道這將是一個愚蠢的錯誤) 。我還應該在字符串'Microsoft'後面加上+號。 – onefootswill 2013-02-20 22:39:23

回答

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