日期:2014-05-17  浏览次数:20960 次

请教一个正则该怎么写的。。
01 CA/FOW / 1760.00 /F/F/ / . /28OCT12 /FY1E 02 CA/FRT / 3340.00/F/F/ / . /28OCT12 /FY1E 03 CA/C / 1320.00 /C/C/ / . /01MAR12 /FY1E 04 CA/C / 2460.00/C/C/ / . /01MAR12 /FY1E 05 CA/Y / 880.00= 1760.00/Y/Y/ / . /01MAR12 /FY1F 06 CA/B / 790.00= 1580.00/B/Y/ / . /01MAR12 /AV1E 07 CA/M / 750.00= 1500.00/M/Y/ / . /01MAR12 /AV1E 08 CA/H / 700.00= 1400.00/H/Y/ / . /01MAR12 /AV1E 09 CA/K / 660.00= 1320.00/K/Y/ / . /01MAR12 /AV1E 10 CA/L / 620.00= 1240.00/L/Y/ / . /01MAR12 /AV1E 11 CA/Q / 530.00= 1060.00/Q/Y/ / . /01MAR12 /AV1E 12 CA/G / 440.00= 880.00/G/Y/ / . /01MAR12 /AV1E 13 CA/V / 400.00= 800.00/V/Y/ / . /01MAR12 /AV1E PAGE 1/1 

这样一连串的字符串我要得到的是 01 CA/FOW / 1760.00 /F/F/ / . /28OCT12 这样的一种形式
正则

------解决方案--------------------
string str="字符串";
var ary = Regex.Split(str, @"(?<=\d+)\s*/[A-Z]{2}\d[A-Z]\s*");
------解决方案--------------------
\d+\s*[A-Z]+\s*/\s*[A-Z]+\s*/\s*\d+\.\d+\s*/[A-Z]+/[A-Z]+/\s*/\s*\.\s*/[A-Z\d]+
------解决方案--------------------
引用:
引用:\d+\s*[A-Z]+\s*/\s*[A-Z]+\s*/\s*\d+\.\d+\s*/[A-Z]+/[A-Z]+/\s*/\s*\.\s*/[A-Z\d]+
这个貌似也太长了点吧。并且还有匹配不到的。

说实话,你这个规则其实不是很明确
------解决方案--------------------
string input = @"01 CA/FOW / 1760.00 /F/F/ / . /28OCT12 /FY1E 02 CA/FRT / 3340.00/F/F/ / . /28OCT12 /FY1E 03 CA/C / 1320.00 /C/C/ / . /01MAR12 /FY1E 04 CA/C / 2460.00/C/C/ / . /01MAR12 /FY1E 05 CA/Y / 880.00= 1760.00/Y/Y/ / . /01MAR12 /FY1F 06 CA/B / 790.00= 1580.00/B/Y/ / . /01MAR12 /AV1E 07 CA/M / 750.00= 1500.00/M/Y/ / . /01MAR12 /AV1E 08 CA/H / 700.00= 1400.00/H/Y/ / . /01MAR12 /AV1E 09 CA/K / 660.00= 1320.00/K/Y/ / . /01MAR12 /AV1E 10 CA/L / 620.00= 1240.00/L/Y/ / . /01MAR12 /AV1E 11 CA/Q / 530.00= 1060.00/Q/Y/ / . /01MAR12 /AV1E 12 CA/G / 440.00= 880.00/G/Y/ / . /01MAR12 /AV1E 13 CA/V / 400.00= 800.00/V/Y/ / . /01MAR12 /AV1E PAGE 1/1 ";
            Regex regex = new Regex(@"(?is)\d+\s+\w+/[^/]+/[^/]+/([a-z]/)+[^/]?(/[^/]+){2}");
            MatchCollection collection = regex.Matches(input);
            foreach (Match item in collection)
            {
         &nbs