2011-01-26 39 views

回答

1

以下正則表達式將每個值提取到指定組中。

(?<Word>(.*))(\s*)\[(?<Column>(.*))\]\s*%(?<Anything>(.*))% 

你的樣品字符串使用這應該給你以下捕獲:

Word = "WORD" 
Column = "COLUMN" 
Anything = "Anything goes" 

要運行這個正則表達式並獲得值,你可以這樣做以下(不採取這種作爲最佳實踐,這只是爲了說明一些基本概念)。

Regex regex = new Regex(@"(?<Word>(.*))(\s*)\[(?<Column>(.*))\]\s*%(?<Anything>(.*))%"); 

Match match = regex.Match("WORD [COLUMN] %Anything goes%"); 

Console.WriteLine(match.Groups["Word"].Value); 
Console.WriteLine(match.Groups["Column"].Value); 
Console.WriteLine(match.Groups["Anything"].Value); 

這應該輸出組捕獲到控制檯。有關C#中正則表達式的更多信息,請查看Regex的MSDN文檔(這也將鏈接到您可能遇到的其他類型)。我還建議Expresso作爲幫助您構建和分析正則表達式的工具。 Expresso還支持代碼發射和各種其他有用的功能。

+0

你是最棒的! – 2011-01-26 04:03:05

3

這樣的事情?

第一抓握一切到第一空間中,然後抓住之間[和],最後抓住一切之間一切%S

 
    ([^ ]*) \[([^\]])\] %(.*)% 
+0

這不會起作用,因爲COLUMN只需要一個字符(我認爲你需要`[^ \]] +`,最後一部分應該是`%[^%] *%`。他允許在「什麼都可以」內嵌入嵌入的`%`字符。 – 2011-01-26 03:57:01

1
([A-Z]+) \[([A-Z]+)\] %(.*)% 

如果字和模式是全部大寫。

相關問題