【问题标题】:Regex in C# Console AppC# 控制台应用程序中的正则表达式
【发布时间】:2014-05-16 20:47:03
【问题描述】:
"Fire hose Tweet - TweetID: 436660665219305472 - ActorID: 120706813"

"Fire hose Tweet - TweetID: 436660665219305472"

"Fire hose Tweet - TweetID: 436660665219305472 "

我是正则表达式 C# 的新手,从示例字符串 1 和字符串 2 中提取推文 ID 436660665219305472 的正则表达式是什么?

【问题讨论】:

    标签: c# regex substring


    【解决方案1】:

    你不需要正则表达式,你可以使用 Split 方法和 LINQ 来得到你想要的:

    var input = "Fire hose Tweet - TweetID: 436660665219305472 - ActorID: 120706813";
    
    var output = input.Split().First(x => x.All(char.IsDigit));
    

    【讨论】:

    • 我不知道为什么它被否决了。我赞成它,我认为它真的很聪明!
    • 如果“TweetID”之前的部分(它是某种标题吗?)恰好包含一个数字,则此解决方案会中断。
    【解决方案2】:

    看看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);
    

    输出:

    推文ID:436660665219305472 推文ID:436660665219305472

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

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

    在这种情况下它会输出:

    436660665219305472

    【讨论】:

      猜你喜欢
      • 2012-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-19
      • 2021-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多