// -- 需要分析的字符串
Group: 239.252.151.1, (?)
Source: 58.223.234.1 (?)
Rate: 153 pps/1691 kbps(1sec), 1687 kbps(last 50 secs), 6 kbps(life avg)
Group: 239.252.151.2, (?)
Source: 58.223.234.3 (?)
Rate: 152 pps/1686 kbps(1sec), 1687 kbps(last 50 secs), 24 kbps(life avg)
Group: 239.252.151.3, (?)
Source: 58.223.234.4 (?)
Rate: 152 pps/1686 kbps(1sec), 1688 kbps(last 50 secs), 21 kbps(life avg)
Group: 239.252.151.4, (?)
Source: 58.223.234.5 (?)
Rate: 152 pps/1686 kbps(1sec), 1688 kbps(last 50 secs), 22 kbps(life avg)
Group: 239.252.151.5, (?)
Source: 58.223.234.6 (?)
Rate: 152 pps/1686 kbps(1sec), 1689 kbps(last 50 secs), 22 kbps(life avg)
Group: 239.252.151.6, (?)
Source: 58.223.234.3 (?)
Rate: 152 pps/1686 kbps(1sec), 1689 kbps(last 50 secs), 23 kbps(life avg).......
(后面还有很多,都是类似于这个结构)我现在想提取 Group后面的ip地址,Source后面的ip地址,Rate后面的xxx pps, xxxx kbps,分别放在4个数组里。请问怎么做,谢谢各位
Group: 239.252.151.1, (?)
Source: 58.223.234.1 (?)
Rate: 153 pps/1691 kbps(1sec), 1687 kbps(last 50 secs), 6 kbps(life avg)
Group: 239.252.151.2, (?)
Source: 58.223.234.3 (?)
Rate: 152 pps/1686 kbps(1sec), 1687 kbps(last 50 secs), 24 kbps(life avg)
Group: 239.252.151.3, (?)
Source: 58.223.234.4 (?)
Rate: 152 pps/1686 kbps(1sec), 1688 kbps(last 50 secs), 21 kbps(life avg)
Group: 239.252.151.4, (?)
Source: 58.223.234.5 (?)
Rate: 152 pps/1686 kbps(1sec), 1688 kbps(last 50 secs), 22 kbps(life avg)
Group: 239.252.151.5, (?)
Source: 58.223.234.6 (?)
Rate: 152 pps/1686 kbps(1sec), 1689 kbps(last 50 secs), 22 kbps(life avg)
Group: 239.252.151.6, (?)
Source: 58.223.234.3 (?)
Rate: 152 pps/1686 kbps(1sec), 1689 kbps(last 50 secs), 23 kbps(life avg).......
(后面还有很多,都是类似于这个结构)我现在想提取 Group后面的ip地址,Source后面的ip地址,Rate后面的xxx pps, xxxx kbps,分别放在4个数组里。请问怎么做,谢谢各位
MatchCollection mc = reg.Matches(strInput);
foreach(Match m in mc)
{
MessageBox.Show(m.Groups["Group"].Value);
} strPattern = @"Source: (?<Source>.*)[ (]"; reg = new Regex(strPattern, RegexOptions.Multiline | RegexOptions.IgnoreCase);
mc = reg.Matches(strInput);
foreach (Match m in mc)
{
MessageBox.Show(m.Groups["Source"].Value);
} strPattern = @"Rate: (?<Rate>.*),"; reg = new Regex(strPattern, RegexOptions.Multiline | RegexOptions.IgnoreCase);
mc = reg.Matches(strInput);
foreach (Match m in mc)
{
MessageBox.Show(m.Groups["Rate"].Value);
}
int lenth = aa.Length;
string[] group = new string[lenth];
string[] source = new string[lenth];
string[] ratepps = new string[lenth];
string[] ratekpps = new string[lenth];
string regstr = @"Group: 239.252.151.1, (?)
Source: 58.223.234.1 (?)
Rate: 153 pps/1691 kbps(1sec), 1687 kbps(last 50 secs), 6 kbps(life avg)
Group: 239.252.151.2, (?)
Source: 58.223.234.3 (?)
Rate: 152 pps/1686 kbps(1sec), 1687 kbps(last 50 secs), 24 kbps(life avg)
Group: 239.252.151.3, (?)
Source: 58.223.234.4 (?)
Rate: 152 pps/1686 kbps(1sec), 1688 kbps(last 50 secs), 21 kbps(life avg)
Group: 239.252.151.4, (?)
Source: 58.223.234.5 (?)
Rate: 152 pps/1686 kbps(1sec), 1688 kbps(last 50 secs), 22 kbps(life avg)
Group: 239.252.151.5, (?)
Source: 58.223.234.6 (?)
Rate: 152 pps/1686 kbps(1sec), 1689 kbps(last 50 secs), 22 kbps(life avg)
Group: 239.252.151.6, (?)
Source: 58.223.234.3 (?)
Rate: 152 pps/1686 kbps(1sec), 1689 kbps(last 50 secs), 23 kbps(life avg)
";
string pattern=@"Group:\s*(?<group>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}),\s*\(\?\)\s*";
pattern+=@"Source:\s*(?<source>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s*\(\?\)\s*";
pattern += @"Rate:\s*(?<RatePps>\d+)\s*pps\/(?<RateKbpsSec>\d+)\s*kbps\(1sec\),\s*(?<RateKbpsLast>\d+)\s*kbps\(last\s*\d+\s*secs\),\s*(?<RateKbpsLife>\d+)\s*kbps\(life\s*avg\)";
Regex reg = new Regex(pattern, RegexOptions.Multiline | RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.ExplicitCapture); MatchCollection matches = reg.Matches(regstr);
int len = matches.Count;
string[] groupIP = new string[len];
string[] sourceIP = new string[len];
string[] RatePps = new string[len];
string[] RateKbpsSec = new string[len];
string[] RateKbpsLast = new string[len];
string[] RateKbpsLife = new string[len];
int iIndex = 0;
foreach(Match mat in matches)
{
groupIP[iIndex] = mat.Groups["group"].Value;
sourceIP[iIndex] = mat.Groups["source"].Value;
RatePps[iIndex] = mat.Groups["RatePps"].Value;
RateKbpsSec[iIndex] = mat.Groups["RateKbpsSec"].Value;
RateKbpsLast[iIndex] = mat.Groups["RateKbpsLast"].Value;
RateKbpsLife[iIndex] = mat.Groups["RateKbpsLife"].Value; iIndex++;
Response.Write(mat.Groups["group"].Value + "__" + mat.Groups["source"].Value + "__" + mat.Groups["RatePps"].Value + "__" + mat.Groups["RateKbpsSec"].Value + "__" + mat.Groups["RateKbpsLast"].Value + "__" + mat.Groups["RateKbpsLife"].Value + "<br/>");
}