C#Console应用程序中的正则表达式

时间:2014-05-16 20:47:04

标签: c# regex substring

"Fire hose Tweet - TweetID: 436660665219305472 - ActorID: 120706813"

"Fire hose Tweet - TweetID: 436660665219305472"

"Fire hose Tweet - TweetID: 436660665219305472 "

我是regex C#的新手,将从样本字符串1&中提取推文ID 436660665219305472的正则表达式字符串2?

2 个答案:

答案 0 :(得分:3)

您不需要正则表达式,您可以使用Split方法和LINQ来获得您想要的内容:

var input = "Fire hose Tweet - TweetID: 436660665219305472 - ActorID: 120706813";

var output = input.Split().First(x => x.All(char.IsDigit));

答案 1 :(得分:1)

查看named grouping construct for .NET

这是一个与您的方案相匹配的示例。

string str1 = "Fire hose Tweet - TweetID: 436660665219305472 - ActorID: 120706813";

string str2 = "Fire hose Tweet - TweetID: 436660665219305472";

var tweetIdRegex = new Regex(@"TweetID:\s(?<TweetID>\d+)", RegexOptions.ExplicitCapture | RegexOptions.Compiled);

Console.WriteLine(tweetIdRegex.Match(str1).Value);
Console.WriteLine(tweetIdRegex.Match(str2).Value);

输出:

TweetID: 436660665219305472
TweetID: 436660665219305472

或者,如果您最终得到一个表示整个字符串的正则表达式,并且您正在使用分组结构,那么您可以执行以下操作,这就是我提到命名分组结构的原因。这是我广泛使用的一种技术。

GroupCollection tweetInfo = tweetIdRegex.Match(str1).Groups;
Console.WriteLine(tweetInfo["TweetID"].Value);

在这种情况下会输出:

436660665219305472