首页 > 解决方案 > 正则表达式过滤代码段

问题描述

我目前正在开发基于 RCON 的工具,它接收代码段,如下所示:Player #5 Thomas Lagerfeuer - BE GUID: d4cd8d8bbc8658007536c3ada1ff7b80 现在我的问题是我只需要最后的 GUID,但我不知道如何过滤它。我已经阅读了一些关于正则表达式的教程,但老实说,它们让我越来越困惑。

我现在所做的如下:

string msg = args.Message;

Console.WriteLine(msg);

//[2018-05-17 | 14:36:28] Player #5 Thomas Lagerfeuer - BE GUID: d4cd8d8bbc8658007536c3ada1ff7b80
string pattern = "(RCon\\.? |admin\\.? |BE GUID:\\.? |#([0-9])\\.? |Player\\.? |BE GUID: \\.? |logged in\\.?)";

string guid = Regex.Replace(msg, pattern, String.Empty);

有人可以帮我吗???

标签: c#regex

解决方案


基于字符串的简单性,Regex 不是必需的。但我将展示这两种选择。

字符串拆分

您可以只拆分字符串:

    var s = "Player #5 Thomas Lagerfeuer - BE GUID: d4cd8d8bbc8658007536c3ada1ff7b80";
    var guid = s.Split(new[] {"GUID: "}, StringSplitOptions.None)[1];

正则表达式

您可以使用组捕获 GUID:

    var s = "Player #5 Thomas Lagerfeuer - BE GUID: d4cd8d8bbc8658007536c3ada1ff7b80";
    var guid = Regex.Match(s, "GUID: (\\w+)").Groups[1].Value;

推荐阅读