如何添加新的命名组?

时间:2013-07-08 23:05:25

标签: c# regex

我有以下工作模式:

String pattern = @"<(?<field>[^/>]+)>(?<data>.*)</\k<field>>";


String tcSQML = "<Pri_Key1>62</Pri_Key1><First1>SAM</First1><Last1>SPADE</Last1>  <GstNo1></GstNo1><Pri_Key2>63</Pri_Key2><First2>TONY</First2><Last2>TUNE</Last2><GstNo2></GstNo2><Pri_Key3>64</Pri_Key3><First3>FRANK</First3><Last3>FAST</Last3><GstNo3></GstNo3><Pri_Key4>65</Pri_Key4><First4>BILLIE</First4><Last4>BLADES</Last4><GstNo4></GstNo4>";
     MatchCollection matches = Regex.Matches(tcSQML, pattern, RegexOptions.Singleline);
     foreach (Match m in matches)
     {
        Console.WriteLine(m.Groups["field"].ToString());
        Console.WriteLine(m.Groups["number"].ToString());

     }

我想要的是能够在场后捕捉数字。例如。在pri_key1中,pri_key应该是字段,1应该是数字。我无法弄清楚如何将这个新的Number组引入这种模式。我尝试了一些变化,没有任何作用。我对RegEx并不擅长,所以我很感激帮助和解释。

1 个答案:

答案 0 :(得分:1)

那是未经测试的:

String pattern = @"<(?<field>[^0-9/>]+)(?<number>[^/>]*)>(?<data>.*)</\k<field>\k<number>>";

我刚刚在field元素后添加了一个新组。新字段元素匹配任何不包含数字或/>字符的字符串。 number元素匹配字段和标记末尾之间的任何内容。