我有如下信息
“id”:“456138988365628440_103920”,“用户”657852231654
我想回来,
456138988365628440_103920
我知道使用
“id”:“[0-9_]*”,“用户”
将返回
“id”:“456138988365628440_103920”,“用户”
但我只想要它id
本身。
您可以通过将所需部分放在括号之间并使用以下方法调用它来使用捕获组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);
}
或者您可以只使用String.Split(如果 regex 不是强制性的):
var input = @"""id"":""456138988365628440_103920"",""user""657852231654""";
var idValue = input.Split(',')[0].Split(':')[1];
Console.WriteLine(idValue);
输出:
456138988365628440_103920
您需要的是正则表达式中的一种条件语句,称为Zero-Width Positive Look-behind Assertion
换句话说,您需要一个声明只匹配id
属性后面的数字。
“id”:“456138988365628440_103920”,“用户”657852231654
(?<="id":")[\d_]*
此正则表达式只会为您返回请求的数字。
你可以在这里测试它。