从模式匹配中提取变量

时间:2015-03-04 00:37:55

标签: regex vb.net match extraction

我不是比赛模式专家,我一直在努力工作几个小时:/

我有一个输入字符串,如下所示:

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

我只想提取3件事:

  1. 巴塞罗那
  2. GM C
  3. ***一些"很酷"文字
  4. 我尝试的模式是这样的:

    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个变量的模式应该是什么?

1 个答案:

答案 0 :(得分:3)

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

似乎与您的样本输入相匹配。

Expresso是设计正则表达式的绝佳工具。