我有这样一个原始字符串: \r\nModel: 129\r\nRevision: 1.2a\r\n我想把Model和Revision作为字符串取出来,我用下面这个代码,为什么尾巴上总是有\r,怎么才能去掉它,请各位帮忙写一个正确的表达式:string model = Regex.Match(modemAnswer, @"Model:(?<A>(.)*)", RegexOptions.IgnoreCase).Result("${A}");string revision = Regex.Match(modemAnswer, @"Revision:(?<A>(.)*)", RegexOptions.IgnoreCase).Result("${A}");帮忙求取model和revision,急用,立即给分!多谢各位大侠!

解决方案 »

  1.   

    已经测试通过:
    string input = "\r\nModel: 129\r\nRevision: 12.6a\r\n";
    string pattern = @"Model: (?<model>\d+)\s*Revision: (?<revision>\d+\.\d+\w*)";
    Match match = Regex.Match(input, pattern);
    if(match.Success)
    {
    string model = match.Groups["model"].Value;
    string revision = match.Groups["revision"].Value;
    MessageBox.Show("model: " + model + " revision: " + revision);
    }
      

  2.   

    在你的模式串末尾加上\r就可以了, 因为正则中\n就是换行符了.string modemAnswer = "\r\nModel: 129\r\nRevision: 1.2a\r\n";string model = Regex.Match(modemAnswer, @"Model:(?<A>.*)\r", RegexOptions.IgnoreCase).Result("${A}");string revision = Regex.Match(modemAnswer, @"Revision:(?<A>.*)\r", RegexOptions.IgnoreCase).Result("${A}");
      

  3.   

    如果你希望把匹配结果中可能存在的前导空格去掉, 可在"(?<A>.*)"前面加上" *"
    @"Model: *(?<A>.*)\r"
    @"Revision: *(?<A>.*)\r"
      

  4.   

    up
    测试通过
    --------------------------------------------------
    using System;
    using System.Text.RegularExpressions;class RegexTest02
    {
      static void Main()
    {
    string modemAnswer="\r\nModel:129\r\nRevision: 1.2a\r\n";
    string model=Regex.Match(modemAnswer,@"Model:(?<A>.*)\r",
    RegexOptions.IgnoreCase).Result("${A}");
    string revision=Regex.Match(modemAnswer,@"Revision:(?<A>.*)\r",
    RegexOptions.IgnoreCase).Result("${A}");
    Console.WriteLine("model:{0}\nrevision:{1}",model,revision);

    }
    }
    ----------------------------------
    结果:
      model:129
      revision: 1.2a
      

  5.   

    感谢 wuyi8808(tm) studio   :) ,是正解,多谢兄台!