0

我有如下信息

“id”:“456138988365628440_103920”,“用户”657852231654

我想回来,

456138988365628440_103920

我知道使用

“id”:“[0-9_]*”,“用户”

将返回

“id”:“456138988365628440_103920”,“用户”

但我只想要它id本身。

4

3 回答 3

2

您可以通过将所需部分放在括号之间并使用以下方法调用它来使用捕获组match.Groups[1].Value

string msg = @"""id"":""456138988365628440_103920"",""user""657852231654""";
var reg = new Regex(@"""id"":""([0-9_]*)"",""user""", RegexOptions.IgnoreCase);
var results = reg.Matches(msg);
foreach (Match match in results)
{
    Console.WriteLine(match.Groups[1].Value);
}

ideone 演示

于 2013-08-25T10:44:30.107 回答
0

或者您可以只使用String.Split(如果 regex 不是强制性的):

var input = @"""id"":""456138988365628440_103920"",""user""657852231654""";
var idValue = input.Split(',')[0].Split(':')[1];
Console.WriteLine(idValue);

输出:

456138988365628440_103920
于 2013-08-25T10:46:02.033 回答
0

您需要的是正则表达式中的一种条件语句,称为Zero-Width Positive Look-behind Assertion

换句话说,您需要一个声明只匹配id属性后面的数字。

“id”:“456138988365628440_103920”,“用户”657852231654

(?<="id":")[\d_]*

此正则表达式只会为您返回请求的数字。

你可以在这里测试它。

于 2013-08-25T10:48:21.117 回答