2015-03-04 3 views
0

Я не специалист матч-модель, и я работал над этим в течение нескольких часов без возможности:/Извлечение переменных из шаблону

У меня есть входной строки так же, как это:

Dim text As String = "32 Barcelona {GM C} 2 {*** Some ""cool"" text here}" 

И я просто хочу, чтобы извлечь 3 вещи:

  1. Барселона
  2. GM C
  3. ** * Некоторые «круто» текст здесь

Узор Я пытаюсь что-то вроде этого:

Dim pattern As String = "^32\s(?<city>[^]].*\s)\{(?<titles>.*\})*" 

Dim m As Match = Regex.Match(text, pattern) 

If (m.Success) Then 

    Dim group1 As Group = m.Groups.Item("city") 
    Dim group2 As Group = m.Groups.Item("titles") 

    If group1.Success Then 
     MsgBox("City:" + group1.Value + ":", MsgBoxStyle.Information) 
    End If 

    If group2.Success Then 
     MsgBox(group2.Value, MsgBoxStyle.Information) 
    End If 
    Else 
     MsgBox("fail") 
    End If 

Но это не работает в любом случае :( Что должно быть рисунок, чтобы извлечь эти 3 переменные?

+0

Есть ли какие-либо ограничения на «классный» текст? Если нет, RegEx может быть не лучшим выбором, так как ваш ввод не соответствует формальному определению для «регулярного» ввода. –

+0

С другой стороны, вы, возможно, все еще можете это сделать, потому что вы можете взять все до конца строки. –

ответ

2

^\d*(?<City>[A-Z a-z0-9]*)\s*\{(?<Titles>[A-Z a-z0-9]*)\}.*?\{(?<Cool>.*?)\}$

Кажется, чтобы соответствовать ввод образца.

Expresso - отличный инструмент для разработки регулярных выражений.

+0

Работал почти отлично. Я подумал, как его использовать. Я думаю, что шаблон «^ \ d * \ s (? . *?) \ S \ {(? . *) \}. *? \ {(? . *?) \} $" Более подходит для моя ситуация. –