2013-12-16 57 views
3

也許這個問題可能會混淆,我非常的n00b到正則表達式,我想我最好的,但沒有成功。提取從字符串中的字,其是基於C#另一個字符串與正則表達式

我有以下文本

public const int A_KEY =    789; 
    public const int A_KEY1 =    123; 
    public const int A_KEY2 =    555; 

上面的字符串包含空格和空格。

我想這個數字基於鍵文本(A_Key的,或A_KEY1,或A_KEY2)(789或123或555)

如果我提供的A_Key我想789,依此類推。

我想是這樣的:

string code = "A_KEY"; 
string pattern = @"[public const int " + code + @"] (\s) [=] \s (\d+)"; 
Regex reg = new Regex(pattern, RegexOptions.IgnoreCase); 
Console.WriteLine(pattern); 
Match m = reg.Match(text); 
if (m.Success) { 
    Console.WriteLine(m.Groups[2]); 
} 

哪裏是我的錯,我的正則表達式?

+1

正則表達式在哪裏? – 2013-12-16 08:01:55

+0

我沒有在你的代碼中看到任何正則表達式。 –

+0

你能發表你正在使用的正則表達式嗎? –

回答

2

您可以使用以下模式:

string pattern = @"public const int (?<Key>[\w\d_]+)\s+=\s+(?<Value>[\d]+)"; 

那麼你將不得不每場比賽兩個命名組(KeyValue)。您可以使用LINQ找到一個,例如A_KEY

var match = Regex.Matches(input, pattern) 
       .Cast<Match>() 
       .FirstOrDefault(m => m.Groups["Key"].Value == "A_KEY"); 
if (match != null) 
{ 
    var value = match.Groups["Value"].Value; 
} 
相關問題