形如这样的 
・*****Begin%VB.ddddddd%dddddddd・的、其中 
"*"代表有0个或多个空格・ 
"%"表示有且必须只能有1个空格・ 
"d"代表有一个或多个字符・ 举个例子: 
比如说有如下的文章 
fsdlfjlskjfsjlhl 
sdfljlskjflsjfuip 
Begin%VB.gdgdgdd%ddgrgdrgdgdfghd ("%"表示) 
fdslkfsfjls 
Begin%VB.ddhtrhthrh%dfrfwereghrddd ("%"表示) 
flsdfjsjfjflkjlkjlk 
Begin%VB.ddddddd%dddddddd ("%"表示) 
Begin%VB.PictureBox%picTaskIcon ("%"表示) 现在我想要从这里面选出带有"*****Begin%VB.ddddddd%dddddddd"这样的字段、"Begin"前面有0个或多个空格、"Begin%VB."这一部分必须的有、"."后面的字符串必须是"ddddddd%dddddddd"这样的形式、就是中间只能有一个空格、下面的正则表达式能起到这个作用吗? ^\s*Begin\sVB[.]\D{3,}\s\D+$ 还有就是下面第二步、我想要把选出来的形如"*****Begin%VB.ddddddd%dddddddd"这样的字符串、中的"Begin%VB."后面的东西、也就是"ddddddd%dddddddd"取出来、 
这一步的正则表达式怎么写(希望高人能给点指点)。 比如(就举一条):按照我写的正则第一步能找出"Begin VB.PictureBox picTaskIcon "(如果不行、还望能给予指点) 
第二步、找出"PictureBox picTaskIcon"、这一步的正则表达式、拜托高人了。 在这里先谢谢各位给予指点的高人了

解决方案 »

  1.   

    比如像这样的
    Begin VB.Label Label1 
             Caption = "A"
          Begin CSCmdLibCtl.CSCmdBtn cmdStop 
             Caption = "B"
          Begin VB.Label Label1 
             Caption = "C"
          Begin VB.Button Button1 
             Caption = "D"
    结果要这样(控件只要Label、Caption只要Label的)
    Begin VB.Label Label1 
    Caption = "A"
    Begin VB.Label Label1 
    Caption = "C"
    正则表达式怎么写(可以多步)
      

  2.   

    需求不同,正则的用法会不同,按照你上面的例子,用替换好一些,可以这样实现string yourStr = ...........;
    string resultStr = Regex.Replace(yourStr, @"Begin\s+\w+\.(?<type>\w+)\s+\w+\s*Caption\s*=\s*""[^""]*""\s*", new MatchEvaluator(expReplace));
            private string expReplace(Match m)
            {
                if (m.Groups["type"].Value == "Label")
                {
                    return m.Value;
                }
                else
                {
                    return "";
                }
            }其中if (m.Groups["type"].Value == "Label")里的"Label"可以替换为一个变量,用来扩展,以得到其它类型控件相关的字符串