3

我在 RegEx 上真的很糟糕,在下面的代码中,我只想要和之间的实际数字,SH:, or end of line.该如何实现?

    [TestMethod]
    public void Sandbox()
    {
        var regEx = new Regex(@"SH\:(.*?)(\,|\z)");
        var matches = regEx.Matches("Some Text|SH:0000000000,SH:1111111111");

        foreach (var match in matches)
        {
            Console.Out.WriteLine(match);

             /* Getting this
             SH:0000000000,
             SH:1111111111
             */

             /* Wanting this
             0000000000
             1111111111
             */
        }
    }
4

3 回答 3

5

只需如下更改您的 for 循环

foreach (Match match in matches)
{
    Console.Out.WriteLine(match.Groups[1].Value);
}
于 2013-05-21T10:42:04.520 回答
1

也可以这样做:

     var regEx = new Regex(@"SH\:(?<abc>.*?)(\,|\z)");
     Console.Out.WriteLine(match.Groups["abc"].Value);
于 2013-05-21T10:43:19.873 回答
0

你也用

var regEx = new Regex(@"(?!SH:)\d+(?=\,|\z)?");

这将只匹配数字。

于 2013-05-21T10:47:01.773 回答