2014-09-02 151 views
0

只需在這裏稍微推一下。我有一個像找到字符串後的所有字符串出現

xyz buildinfo app_id="12345" asf 
sfsdf buildinfo app_id="12346" wefwef 
... 

我需要得到以下APP_ID =一個字符串數組數與數據的文件。下面的代碼給我所有的匹配,我可以得到計數(Regex.Matches(text,searchPattern).Count)。但我需要將實際項目放入數組中。

string searchPattern = @"app_id=(\d+)"; 
       var z = Regex.Matches(text, searchPattern); 
+1

'新的正則表達式(是searchPattern).Match(文本).Captures'(或'.Groups') – knittl 2014-09-02 15:50:52

+0

你是否絕對需要正則表達式,或者你會同樣使用字符串方法? – terrybozzio 2014-09-02 16:06:21

回答

0

我覺得你說你希望在無APP_ID部分項目(編號)。你想用一個Positive Lookbehind

string text = @"xyz buildinfo app_id=""12345"" asf sfsdf buildinfo app_id=""12346"" wefwef"; 
string searchPattern = @"(?<=app_id="")(\d+)"; 
var z = Regex.Matches(text, searchPattern) 
       .Cast<Match>() 
       .Select(m => m.Value) 
       .ToArray(); 

(?<=app_id="")將匹配的模式,但不包括在捕獲

+0

這工作得很好!但它會選擇像app_id = 12345這樣的字符串。我只需要這個號碼。我如何更改RE。或者我應該在Select – mhn 2014-09-02 16:08:10

+0

上使用Replace,我發現問題。我仍然在使用我的同一個RE – mhn 2014-09-02 16:14:29

0

你可以看看documentation

引用它,你可以使用此代碼:

string pattern = @"app_id=(\d+)"; 
    string input = "xyz buildinfo app_id="12345" asf sfsdf buildinfo app_id="12346" efwef"; 

    Match match = Regex.Match(input, pattern); 
    if (match.Success) { 
    Console.WriteLine("Matched text: {0}", match.Value); 
    for (int ctr = 1; ctr <= match.Groups.Count - 1; ctr++) { 
     Console.WriteLine(" Group {0}: {1}", ctr, match.Groups[ctr].Value); 
     int captureCtr = 0; 
     foreach (Capture capture in match.Groups[ctr].Captures) { 
      Console.WriteLine("  Capture {0}: {1}", 
          captureCtr, capture.Value); 
      captureCtr += 1;     
     } 
    } 
    } 
相關問題