string pattern = @"\s*\[SYSTEM\]\s*" +
                 @"<reset\s+system>\s*" +
                 @"(?<ResetSystem>.*?)\s*" +
                 @"<host\s+name>\s*" +
                 @"(?<HostName>.*?)\s*" +
                 @"<serial\s+number>\s*" +
                 @"(?<SN>.*?)\s*$";Regex r = new Regex( pattern , RegexOptions.IngoreCase | RegexOptions.SingleLine );
Match m = r.Match ( systemSection );
if ( m.Success )
{
   string hostName = m.Groups[ "HostName" ].Value;
}

解决方案 »

  1.   

    可以是这样
    string patten = @"<(?<Title>[^<>]+)>\s*(?<Content>[^<]*?)\s*((?=<)|$)";Regex r = new Regex( pattern , RegexOptions.IngoreCase | RegexOptions.SingleLine );
    Match m = r.Match ( systemSection );
    if ( m.Success )
    {
       string title = m.Groups[ "title" ].Value;
       string content = m.Groups[ "content" ].Value;
    }但当content中包含<符号时,得到的字符串不符合要求
      

  2.   

    有Windows API 不用为何要用 浪费性能正则表达式操作INI?
      

  3.   

    http://www.regular-expressions.info/tutorial.html
      

  4.   

    〉〉有点麻烦,为什么不用xml?人家的设备中用的是INI,我总不能去该设备的程序吧〉〉有Windows API 不用为何要用 浪费性能正则表达式操作INI?这个也不是完全标准的INI,所以用API不好用,再说,不同的设备中的INI稍有变化,用API如果你不知道里头具体有哪些项目的话,可能会漏掉一些项目的
      

  5.   

    OneDotRed(武装到眼神) string patten = @"<(?<Title>[^<>]+)>\s*(?<Content>[^<]*?)\s*((?=<)|$)";
    这条语句中,我如何指定我要哪个的Section和哪个的Key?
      

  6.   

    to cellblue(cellblue) :
    string patten = @"<(?<Title>[^<>]+)>\s*(?<Content>[^<]*?)\s*((?=<)|$)";
    这条语句中,我如何指定我要哪个的Section和哪个的Key?
    -----------------------------------------------------------------
    将上面的代码改一改:
    string patten = @"<(?<Title>[^<>]+)>\s*(?<Content>[^<]*?)\s*((?=<)|$)";Regex r = new Regex( pattern , RegexOptions.IngoreCase | RegexOptions.SingleLine );
    Match m = r.Match ( systemSection );
    while ( m.Success )        //循环提取所有的Section和Key
    {
       string title = m.Groups[ "title" ].Value;
       string content = m.Groups[ "content" ].Value;
       m = m.NextMatch();
    }
      

  7.   

    OneDotRed(武装到眼神) 同志   string title = m.Groups[ "title" ].Value;
       string content = m.Groups[ "content" ].Value;
    这两个获得的值都是"",就是没有取回任何东东
    为什么?
      

  8.   

    这两个获得的值都是"",就是没有取回任何东东
    为什么?
    --------------------
    注意大小写。
    实现替换操作,举个简单的例子
    我像将
    1-2,2-3替换成2-1,3-2
    可以这样写string a = "1-2,2-3";
    a = Regex.Replace( a , @"(?<a>\d)-(?<b>\d)(,|$)) , "${b}-${a}" );
      

  9.   

    http://www.dvpx.com/(a1qi2jbfq3dgtonzb3xhphb0)/index_article_display.aspx?Fid=9&id=50
      

  10.   

    请问如何读取如下格式的INI文件[SYSTEM]
    <reset system>
    Yes
    <host name>
    Network Camera with Pan/Tilt
    <serial number>
    0002D10075EB问题:
    另外,如何修改host name的信息,比如把“Network Camera with Pan/Tilt”这些信息改为“Network Camera”最后,假定host name这个key不存在,如何建立?如何删除这个Key?就剩下这两个问题了,谢谢
      

  11.   

    修改replace不就行了;
    正则表达式不匹配不就找不到了吗?至于写的话应该不是正则表达式的事情。
    删除的话replace为空不就可以了嘛!!!
    既然解决了前边,这些本来就不是问题了