文本格式:Welch Allyn SureSigtR 8 S+1.50 C-0.50 A142
L 9 S+1.75 C-0.50 A161Name:刘小明Date:2010-05-01 19:00:001请问各位如何得到
R=8,RS=1.50,RS=-0.50,RA=142;
L=9,LS=1.75,C=-0.50 LA=161;
Name=刘小明 Date=2010-05-01
L 9 S+1.75 C-0.50 A161Name:刘小明Date:2010-05-01 19:00:001请问各位如何得到
R=8,RS=1.50,RS=-0.50,RA=142;
L=9,LS=1.75,C=-0.50 LA=161;
Name=刘小明 Date=2010-05-01
替换 “R ”为"R="
替换 由R开头的 "S+" 替换为"RS=" 依次类推。。
string test = @"Welch Allyn SureSigtR 8 S+1.50 C-0.50 A142
L 9 S+1.75 C-0.50 A161Name:刘小明Date:2010-05-01 19:00:001
";
MatchCollection mc = Regex.Matches(test, @"(?n)R (?<r>\d+) S(?<rs>([+-]?\d+(\.\d+)?)) C(?<rc>([+-]?\d+(\.\d+)?)) A(?<ra>([+-]?\d+(\.\d+)?))\r\nL (?<l>\d+) S(?<ls>([+-]?\d+(\.\d+)?)) C(?<lc>([+-]?\d+(\.\d+)?)) A(?<la>([+-]?\d+(\.\d+)?))\s+Name:(?<name>\S+)\s+Date:(?<date>\d{4}-\d{2}-\d{2}) \d{2}:\d{2}:\d{2}");
foreach (Match m in mc)
{
Console.WriteLine("R=" + m.Groups["r"].Value);
Console.WriteLine("RS=" + m.Groups["rs"].Value);
Console.WriteLine("RC=" + m.Groups["rc"].Value);
Console.WriteLine("RA=" + m.Groups["ra"].Value);
Console.WriteLine("L=" + m.Groups["l"].Value);
Console.WriteLine("LS=" + m.Groups["ls"].Value);
Console.WriteLine("LC=" + m.Groups["lc"].Value);
Console.WriteLine("LA=" + m.Groups["la"].Value);
Console.WriteLine("Name=" + m.Groups["name"].Value);
Console.WriteLine("Date=" + m.Groups["date"].Value);
}
-修改为->
Regex reg = new Regex(@"(?i)\b([RLSCA]|Name:|Date:)\s*(\S+)");
你是不是测试方法不对?
private static void TestRegex01()
{
string test = @"Welch Allyn SureSigtR 8 S+1.50 C-0.50 A142
L 9 S+1.75 C-0.50 A161Name:刘小明Date:2010-05-01 19:00:001
";
MatchCollection mc = Regex.Matches(test, @"(?n)R (?<r>\d+) S(?<rs>([+-]?\d+(\.\d+)?)) C(?<rc>([+-]?\d+(\.\d+)?)) A(?<ra>([+-]?\d+(\.\d+)?))\r\nL (?<l>\d+) S(?<ls>([+-]?\d+(\.\d+)?)) C(?<lc>([+-]?\d+(\.\d+)?)) A(?<la>([+-]?\d+(\.\d+)?))\s+Name:(?<name>\S+)\s+Date:(?<date>\d{4}-\d{2}-\d{2}) \d{2}:\d{2}:\d{2}");
foreach (Match m in mc)
{
Console.WriteLine("R=" + m.Groups["r"].Value);
Console.WriteLine("RS=" + m.Groups["rs"].Value);
Console.WriteLine("RC=" + m.Groups["rc"].Value);
Console.WriteLine("RA=" + m.Groups["ra"].Value);
Console.WriteLine("L=" + m.Groups["l"].Value);
Console.WriteLine("LS=" + m.Groups["ls"].Value);
Console.WriteLine("LC=" + m.Groups["lc"].Value);
Console.WriteLine("LA=" + m.Groups["la"].Value);
Console.WriteLine("Name=" + m.Groups["name"].Value);
Console.WriteLine("Date=" + m.Groups["date"].Value);
}
}
}
输出结果:R=8
RS=+1.50
RC=-0.50
RA=142
L=9
LS=+1.75
LC=-0.50
LA=161
Name=刘小明
Date=2010-05-01
L 9 S+1.75 C-0.50 A161Name:刘小明Date:2010-05-01 19:00:001";
Regex reg = new Regex(@"(?i)\b([RLSCA]|Date:)\s*(?<value>[-+\d.]+)|Name:(?<value>\S+)");
MatchCollection mc = reg.Matches(test);
foreach (Match m in mc)
{
Console.WriteLine(m.Groups["value"].Value);
}