如何在特定代码后提取数字

时间:2018-01-25 18:16:31

标签: c# regex

我想从特定代码中提取一个数字......

这是代码

":true,"itemId":"202190176821","defaultWatchCount":23,"isUserSignedIn":true,"isItemEnded"

我想以编程方式提取23号码。

我使用了正则表达式,但没有显示任何内容。

这是代码。

string number = String.Empty; // default value if not found

Match m = Regex.Match(html, @"defaultWatchCount"":""([0-9]+?)");

if (m.Success)
    number = m.Groups[1].Value;

但它没有显示任何内容。

你能告诉我我的代码错误吗?

2 个答案:

答案 0 :(得分:0)

这是正则表达式,请检查here

Match m = Regex.Match(html, @"""defaultWatchCount"":(\d+)");

您的输入看起来像JSON,您应该使用JSON解析器,如果确实如此。

答案 1 :(得分:0)

您可以在documentation中使用可变长度的lookbehinds,因此无论冒号:字符周围是否有空格,以下正则表达式都适用于您。此方法也不需要使用捕获组:

(?<="defaultWatchCount"\s*:\s*)\d+

用法

See regex in use here

using System;
using System.Text.RegularExpressions;

public class Example
{
    public static void Main()
    {
        string pattern = @"(?<=""defaultWatchCount""\s*:\s*)\d+";
        string input = @""":true,""itemId"":""202190176821"",""defaultWatchCount"":23,""isUserSignedIn"":true,""isItemEnded""";

        foreach (Match m in Regex.Matches(input, pattern))
        {
            Console.WriteLine(m.Value);
        }
    }
}