解析 iperf 结果
parsing iperf result
请帮助提取 [SUM]
的正则表达式结果
[4] 0.00-10.01 秒 1.32 GB 1.13 Gbits/sec 发件人
[ 4] 0.00-10.01 秒 1.32 GB 1.13 Gbits/sec 接收器
[6] 0.00-10.01 秒 1.56 GB 1.34 Gbits/sec 发件人
[6] 0.00-10.01 秒 1.56 GB 1.34 Gbits/sec 接收器
[8] 0.00-10.01 秒 1.52 GB 1.31 Gbits/sec 发件人
[8] 0.00-10.01 秒 1.52 GB 1.31 Gbits/sec 接收器
[10] 0.00-10.01 秒 1.29 GB 1.11 Gbits/sec 发件人
[10] 0.00-10.01 秒 1.29 GB 1.11 Gbits/sec 接收器
[SUM] 0.00-10.01 秒 5.70 GBytes 4.89 Gbits/sec 发件人
[SUM] 0.00-10.01 秒 5.69 GBytes 4.88 Gbits/sec 接收器
帮助获取 [SUM] 发件人和收件人 Gbits/sec
最后 2 行 - Gbits/sec
例如得到
第一个 = 4.89
秒 = 4.88
我试过正则表达式 - ([SUM].*GBytes )?(Gbits/sec.*receiver)
谢谢
您必须在正则表达式中转义特殊字符 ([ /)。
string data = @"
[ 4] 0.00-10.01 sec 1.32 GBytes 1.13 Gbits/sec sender
[ 4] 0.00-10.01 sec 1.32 GBytes 1.13 Gbits/sec receiver
[ 6] 0.00-10.01 sec 1.56 GBytes 1.34 Gbits/sec sender
[ 6] 0.00-10.01 sec 1.56 GBytes 1.34 Gbits/sec receiver
[ 8] 0.00-10.01 sec 1.52 GBytes 1.31 Gbits/sec sender
[ 8] 0.00-10.01 sec 1.52 GBytes 1.31 Gbits/sec receiver
[ 10] 0.00-10.01 sec 1.29 GBytes 1.11 Gbits/sec sender
[ 10] 0.00-10.01 sec 1.29 GBytes 1.11 Gbits/sec receiver
[SUM] 0.00-10.01 sec 5.70 GBytes 4.89 Gbits/sec sender
[SUM] 0.00-10.01 sec 5.69 GBytes 4.88 Gbits/sec receiver";
var matches = System.Text.RegularExpressions.Regex.Matches(data, @"\[SUM\].*\s(?<rate>[0-9.]+) Gbits\/sec (?<type>sender|receiver)");
foreach (System.Text.RegularExpressions.Match m in matches)
{
Console.WriteLine($"{m.Groups["rate"].Value} {m.Groups["type"].Value}");
}
输出
4.89 sender
4.88 receiver
请帮助提取 [SUM]
的正则表达式结果[4] 0.00-10.01 秒 1.32 GB 1.13 Gbits/sec 发件人
[ 4] 0.00-10.01 秒 1.32 GB 1.13 Gbits/sec 接收器
[6] 0.00-10.01 秒 1.56 GB 1.34 Gbits/sec 发件人
[6] 0.00-10.01 秒 1.56 GB 1.34 Gbits/sec 接收器
[8] 0.00-10.01 秒 1.52 GB 1.31 Gbits/sec 发件人
[8] 0.00-10.01 秒 1.52 GB 1.31 Gbits/sec 接收器
[10] 0.00-10.01 秒 1.29 GB 1.11 Gbits/sec 发件人
[10] 0.00-10.01 秒 1.29 GB 1.11 Gbits/sec 接收器
[SUM] 0.00-10.01 秒 5.70 GBytes 4.89 Gbits/sec 发件人
[SUM] 0.00-10.01 秒 5.69 GBytes 4.88 Gbits/sec 接收器
帮助获取 [SUM] 发件人和收件人 Gbits/sec
最后 2 行 - Gbits/sec
例如得到
第一个 = 4.89
秒 = 4.88
我试过正则表达式 - ([SUM].*GBytes )?(Gbits/sec.*receiver) 谢谢
您必须在正则表达式中转义特殊字符 ([ /)。
string data = @"
[ 4] 0.00-10.01 sec 1.32 GBytes 1.13 Gbits/sec sender
[ 4] 0.00-10.01 sec 1.32 GBytes 1.13 Gbits/sec receiver
[ 6] 0.00-10.01 sec 1.56 GBytes 1.34 Gbits/sec sender
[ 6] 0.00-10.01 sec 1.56 GBytes 1.34 Gbits/sec receiver
[ 8] 0.00-10.01 sec 1.52 GBytes 1.31 Gbits/sec sender
[ 8] 0.00-10.01 sec 1.52 GBytes 1.31 Gbits/sec receiver
[ 10] 0.00-10.01 sec 1.29 GBytes 1.11 Gbits/sec sender
[ 10] 0.00-10.01 sec 1.29 GBytes 1.11 Gbits/sec receiver
[SUM] 0.00-10.01 sec 5.70 GBytes 4.89 Gbits/sec sender
[SUM] 0.00-10.01 sec 5.69 GBytes 4.88 Gbits/sec receiver";
var matches = System.Text.RegularExpressions.Regex.Matches(data, @"\[SUM\].*\s(?<rate>[0-9.]+) Gbits\/sec (?<type>sender|receiver)");
foreach (System.Text.RegularExpressions.Match m in matches)
{
Console.WriteLine($"{m.Groups["rate"].Value} {m.Groups["type"].Value}");
}
输出
4.89 sender
4.88 receiver