0

我有以下工作模式:

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 应该是数字。我不知道如何将这个新的数字组引入这个模式。我尝试了一些变化,但没有任何效果。我不擅长 RegEx,因此感谢您的帮助和解释。

4

1 回答 1

1

这是未经测试的:

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

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

于 2013-07-08T23:10:23.333 回答