2014-09-23 3 views
-1

Я пытаюсь создать Regex с именованными группами, которые соответствуют всем четырем следующих строк:Нужна помощь в C# Regex

var club = "Real Madrid"; 
var city = "Madrid"; 
var nation = "Spain"; 

var string1 = club; 
var string2 = club + "," + city; 
var string3 = club + "(" + nation + ")"; 
var string4 = club + "," + city + "(" + nation + ")"; 

Или другими словами: Строка выглядит как "club,city(nation)" где города и нации необязательно с дополнительными включенными пробелами.

Спасибо за помощь!

+0

Какие выражения вы пробовали до сих пор – Priyank

+0

Показать то, что вы смотрели в о regexs Сейчас, кажется, вы просто конкатенация строк – fejese

+0

хороший инструмент для отладки регулярных выражений HTTP:..//www.regexr.com/. Есть даже cheatsh eet, предоставляя вам правильные заполнители – PhilLab

ответ

0

Regex из aelor, но добавил "(" знак после "^ ([^,?", Чтобы соответствовать строку "Реал Мадрид (Испания)"

Добавлен пример кода . слишком

var strings = new List<string>() { "Real Madrid", "Real Madrid,Madrid", "Real Madrid(Spain)", "Real Madrid,Madrid(Spain)" }; 

foreach (var str in strings) 
{ 
    var match = Regex.Match(str, @"^(?<club>[^,]+)(?:,(?<city>[^\(]+))?(?:\((?<nation>[^\)]+)\))?$"); 

    var name = match.Groups["club"].Value; 
    var city = match.Groups["city"].Value; 
    var country = match.Groups["nation"].Value; 
} 
1
^(?<club>[^,]+)(?:,(?<city>[^\(]+))?(?:\((?<nation>[^\)]+)\))?$ 

Я думаю, что это послужит вашей цели для всех строк.

демо здесь: http://regex101.com/r/nV7pT7/2