RegEx过滤代码段

时间:2018-05-18 09:13:57

标签: c# regex

我目前正在开发基于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);

任何人都可以帮我吗???

2 个答案:

答案 0 :(得分:1)

基于字符串的简单性,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;

答案 1 :(得分:0)

string guid = msg.substring(msg.lastIndexOf(Environment.WhiteSpace));

如果你想使用regexp,你可以在一些基于浏览器的正则表达式测试器中试用你的正则表达式,如https://regex101.com/https://regexr.com/