嘗試: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);
你會得到一個在matches
MatchCollection
可以通過枚舉,像這樣:
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"]
的結果將是該組捕獲的字符串。
你可以試試這個 「(M?)^:SETVAR」 +變量+ 「(+)$」,然後搜索在Match.Groups變量: ) – 2013-04-11 13:17:16
如果您只想檢查每行的匹配項,您也可以使用'string.Split()'在嘗試匹配任何內容之前預先格式化字符串。 – Nolonar 2013-04-11 13:21:47
你需要檢查它是否匹配,或者你需要從字符串中獲得價值嗎? – rpeshkov 2013-04-11 13:26:03