尝试:setvar\s+(?<variable>\w*)\s+"?(?<value>\w*)"?
- 这将解析每一行并为您提供一个包含变量和每个匹配项值的命名组。
分解它:
:setvar
查找以 ":setvar" 开头后跟一个或多个空格的字符串部分。
(?<variable>\w*)
采用“setvar”后面的非空白字符并将它们解析为命名组“变量”
"?(?<value>\w*)"?
获取变量后面的非空白字符并将它们解析为命名组“值”。每边的 "? 使引号可选。
\s+
(出现多次)允许一个或多个空格将 setvar 与变量和值分开。
所以使用这段代码:
var findSetvars = new Regex(@":setvar\s+(?<variable>\w*)\s+""?(?<value>\w*)""?");
var matches = findSetvars.matches(input);
你会得到一个可以像这样枚举的MatchCollection
in :matches
foreach(Match match in matches)
{
var variable = match.Groups["variable"];
var value = match.Groups["value"];
// now do whatever.
}
请注意,这Regex.MatchCollection
是 .net 1.0 样式的对象集合之一,因此您必须告诉编译器它的每个成员都是一个Match
对象。很烦人,希望他们能把它换成一个通用的匹配列表。的结果match.Groups["groupname"]
将是该组捕获的字符串。