2013-08-07 4 views
0

Я уверен, что здесь что-то не так, но я не могу указать на проблему.Regex.Matches возвращает нулевой результат

У меня есть эта линия в моих C# код:

string match = "Test - Wow"; 
MatchCollection contact = Regex.Matches(match, "-"); 

//Expected output in contact : contact[0]=="Test " & contact[1]==" Wow" ; 

Но по какому-то причине контакта возвращения пустой, то есть не матч за "-". Я даже пробовал @"-", "(-)", "(-)*", "[-]", "([-]*)" но ничего не работает. Что я делаю неправильно?

+1

Почему regex? вместо этого используйте split. –

+0

Да, я подумал об этом, но я уже начинаю с этого. Я буду использовать split, если он не будет работать. Благодаря! – Ofear

+0

@Ofear: _ «Может быть, мне нужно поставить' Regex reg = new Regex() '? _" Зачем спрашивать, можете ли вы просто попробовать это самостоятельно? – stakx

ответ

1

Нет, это не так. Он работает правильно!

string match = "Test - Wow"; 
MatchCollection contact = Regex.Matches(match, "-"); 
int count = contact.Count; // returns 1 
Match onematch = contact[0]; 
string str = onematch.ToString(); // returns - 

Test здесь http://ideone.com/LWTQWn

Если вы хотите регулярное выражение, которое возвращает все строки, если - присутствует, что-то вроде этого .*-.* будет делать (любое количество любых символов, один - любое число любой символ)

1
  • является символом reserverd для регулярного выражения. Вам понадобится «-» (слэш-минус). Что будет найдено, это «-». Когда вы хотите найти Test and Wow, вам нужно использовать функцию Regex.Split().
1

Вам не нужно регулярное выражение для выполнения этой задачи. Лучше использовать функцию split.

"Test - Wow".Split('-').Select(x => x.Trim()) 
Смежные вопросы