从模式匹配中提取变量
Extract variables from pattern matching
我不是匹配模式专家,我已经为此工作了几个小时,但没有机会:/
我有一个这样的输入字符串:
Dim text As String = "32 Barcelona {GM C} 2 {*** Some ""cool"" text here}"
我只想提取 3 个东西:
- 巴塞罗那
- GM C
- *** 此处有一些 "cool" 文本
我正在尝试的模式是这样的:
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 个变量的模式应该是什么?
^\d*(?<City>[A-Z a-z0-9]*)\s*\{(?<Titles>[A-Z a-z0-9]*)\}.*?\{(?<Cool>.*?)\}$
似乎与您输入的示例匹配。
Expresso 是设计正则表达式的好工具。
我不是匹配模式专家,我已经为此工作了几个小时,但没有机会:/
我有一个这样的输入字符串:
Dim text As String = "32 Barcelona {GM C} 2 {*** Some ""cool"" text here}"
我只想提取 3 个东西:
- 巴塞罗那
- GM C
- *** 此处有一些 "cool" 文本
我正在尝试的模式是这样的:
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 个变量的模式应该是什么?
^\d*(?<City>[A-Z a-z0-9]*)\s*\{(?<Titles>[A-Z a-z0-9]*)\}.*?\{(?<Cool>.*?)\}$
似乎与您输入的示例匹配。
Expresso 是设计正则表达式的好工具。