使用RegEx获取int值

时间:2018-03-11 10:01:19

标签: c# regex

所以我有一个字符串,我想在Param8上得到int值,我尝试使用Regex表达式

  

(< Param8>)\ d +(< / Param8>)

但我只想要它里面的值。

<Param1>13</Param1>
<Param2>Print Document</Param2>
<Param3>username</Param3>
<Param4>\\PC</Param4>
<Param5>HP DeskJet 1110 series</Param5>
<Param6>USB001</Param6>
<Param7>123</Param7>
<Param8>1</Param8>

我如何获得最后一个参数的int值?因为当我尝试上面的表达式时,它还包含了param标签。

编辑: 这是我的代码

private void getPrintedPages()
{
    Regex parts = new Regex(@"<Param8>\d+</Param8>");

    StreamReader reader = File.OpenText(@".\report.xml");
    string line;
    while ((line = reader.ReadLine()) != null)
    {
        Match match = parts.Match(line);
        if (match.Success)
        {
            string result = match.Groups[1].Value.ToString();

            MessageBox.Show(result);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您需要在正则表达式中使用组

static void Main(string[] args)
{
    string input = "<Param8>1</Param8>";

    Regex rx = new Regex(@"<Param8>(\d+)</Param8>");
    var res = rx.Match(input);

    Console.WriteLine(res.Groups[1].Value);
}

无需为您的打开/关闭代码使用群组(),只为您的数字添加群组并获取它。零组总是完整的结果,所以你需要第一个。