2016-04-06 2 views
0

Вот мой тест для с матча # регулярное выражение:C матч # регулярное выражение всегда возвращает ложь

AAA 
BB 
AAA+15d 
BB-205w 

Узор я использовал это: @"^(AAA|BB)([\+|\-]\d+[d|w])*$", когда я проверить его в Интернете в некоторых .net регулярных выражений тестером, он говорит матч , но когда я запускаю его в кодах C#, всегда возвращайте false для последних двух тестовых случаев. Что не так с шаблоном?

+3

Покажите свой C# код. BTW вам не нужно '' '(изменение) в классе символов. '[+ -]' и '[dw]' будут в порядке. –

+0

Regex действительно работает, но может немного улучшиться до ['^ (AAA | BB) ([+ -] \ d + [dw]) * $'] (http://regexstorm.net/tester?p=% 5e (ААА% 7cBB) (% 5b% 2b-% 5d% 5CD% 2b% 5bdw% 5d) *% 5cr% 3f% 24 & я = ААА% 0d% 0aBB% 0d% 0aAAA% 2b15d% 0d% 0aBB-205W & о = м) –

+0

var pattern = @ "^ (AAA | BB) ([+ -] \ d + [DW]) * $"; bool isMatch = Regex.IsMatch (шаблон, "AAA + 180D", RegexOptions.IgnoreCase); –

ответ

1

я не могу воспроизвести Упомянутый поведение на

List<string> Input = new List<string>() { "AAA", "BB", "AAA+15d", "BB-205w" }; 
string Pattern = @"^(AAA|BB)([+-]\d+[dw])*$"; 
foreach (string item in Input) 
{ 
    Console.WriteLine(Regex.IsMatch(item, Pattern)); 
} 

Результат:

True 
True 
True 
True 
+0

Это может быть необходимо только для демонстрации *. Строки наиболее вероятно проверены независимо. Без флага модификатора OP может соответствовать первым двум строкам. –

+0

@fubo спасибо вам большое, я видел, что не так с кодом C#. У меня есть элемент, порядок обращений отменен. –

Смежные вопросы