2013-02-20 2 views
1

Я очень ржав на своем регулярном выражении и потратил около 2 часов, пытаясь сделать что-то, что должно быть очень простым.Проверка текста по нескольким опциям

В принципе, я хочу выражение регулярных выражений, которое может проверять кучу имен файлов (конечная цель состоит в том, чтобы исключить те, которые не актуальны - это использование класса FileSearch в Cassette для исключения ненужных файлов 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(); 
} 

Есть ли какие-либо легенды регулярных выражений, которые могут показать мне e свет !?

+1

Почему неоднократных вы '(^. + \. + Min.js $)' дважды в своем регулярном выражении ? И почему есть пробелы после некоторого ')' и перед некоторым '('. –

+0

что такое 'Microsoft.' – Anirudha

+0

@Rohit. Ваш ответ верен. То есть пробел (я знал, что это будет глупая ошибка) И я также должен был добавить + после периода, следующего за строковым литералом «Microsoft». – onefootswill

ответ

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