求教问题,最好用正则解决
有一组数据格式如下
---- METTLER TOLEDO ----
----- SQC-XP V2.02 -----
-------- SAMPLE -----55-
--- 26.02.14 - 10:13 ---
------ B-490-381A ------
Name xxxxxxxxxxx
Operator Home
Batch 1
Nominal 0.2000 g
1 0.2017 | | ? | |
2 0.1698踻 | | | |
3 0.1984 | | ? | |
4 0.1966 | | 眧 | |
5 0.1993 | | ? | |
6 0.1623踻 | | | |
7 0.1990 | | ? | |
8 0.2020 | | ? | |
9 0.1990 | | ? | |
10 0.1991 | | ? | |
11 0.2012 | | ? | |
12 0.1618踻 | | | |
13 0.2075 | | | 眧 |
14 0.2120 | | | |瞸
15 0.2048 | | |?| |
16 0.1624踻 | | | |
17 0.2050 | | |?| |
18 0.2024 | | ? | |
19 0.1631踻 | | | |
20 0.2036 | | |?| |
^ 96.28 % 0.19255 g
s 9.04 % 0.01740 g
Min 80.90 % 0.1618 g
Max 106.00 % 0.2120 g
R 25.10 % 0.0502 g
需要结果
中间部分的需要部分取出来1,2,3,4,5。。。。20;
中间部分小数取出来0.1698、0.1984、。。。。0.2036;
请用VS2005实现
------解决方案--------------------如果数据格式(形式都是固定的)是可以这么干的
先把中间的数据匹配出来(第一次正则根据开始和结果的特性提取)
然后根据内容形式提取列表
开始
Nominal[\s\S]*?g
结束
\^[\s\S]*?g
------解决方案--------------------
foreach(Match m in Regex.Matches(yourstr,@"(?m)^(\d+)\s*(\d+\.\d+).*"))
{
//m.Groups[1].Value //中间部分的序号部分取出来1,2,3,4,5。。。。20;
//m.Groups[2].Value //中间部分小数取出来0.1698、0.1984、。。。。0.2036
}