用正则表达式接收一组数字

时间:2013-08-25 10:25:16

标签: c# regex

我有以下信息

  

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

我想回来,

  

456138988365628440_103920

我知道使用

  

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

将返回

  

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

但我只想要id本身。

3 个答案:

答案 0 :(得分: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 demo

答案 1 :(得分:0)

或者你可以使用String.Split(如果正则表达式不是强制性的):

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

输出:

456138988365628440_103920

答案 2 :(得分:0)

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

换句话说,您需要一个声明,其中仅匹配id属性之后的数字。

" ID":" 456138988365628440_103920""用户" 657852231654

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

此正则表达式只会为您返回所请求的号码。

您可以对其进行测试here