C#Regex检查控制面板

时间:2015-09-20 10:26:29

标签: c# regex controls panel minecraft

我在C#中有这个问题.. 我正在尝试为Minecraft服务器制作一个控制面板。 我有控制台输出和控制面板中的所有这些东西,它的工作原理。 现在我有一个在线播放器盒子,但它背后的代码是不工作的.. 我想检查这样的事情:[11:49:43 INFO]:JonasC [/127.0.0.1:51292]登录 但随后与Regex,它应该在开始时有一个时间,名称和IP地址也应该是变量.. 我现在有这个代码,但它不起作用..

#region Test for join
try
{
    Regex TestRegex = new Regex(@"[0-9\-]{10}\ ([0-9:]{8})\ \[INFO\]\ ([^\ ]*)\ [^\]]*\]\ (logged\ in)");
    if (TestRegex.IsMatch(AText))
    {
        MessageLogAddition = "";

        string[] Matches = TestRegex.Split(AText);
        MessageLogAddition += Matches[1] + " ";
        MessageLogAddition += Matches[2] + " ";
        MessageLogAddition += "joined.";

        ConnectedPlayersListBox.Items.Add(Matches[2].Trim());

        if (!AllPlayersListBox.Items.Contains(Matches[2].Trim()))
        {
            AllPlayersListBox.Items.Add(Matches[2].Trim());
        }
    }
}
catch
{
}
#endregion

感谢所有帮助! 该面板是开源的。 代码位于:http://coded.ddns.info/dl/MCSC_Source.zip

1 个答案:

答案 0 :(得分:-2)

这个怎么样:

var TestRegex = new Regex(@"\[(?<time>.+) INFO]: (?<name>.+)\[(?<ip>.+)\] logged in");

然后您也可以像这样引用命名组:

var match = reg.Match(AText);
var timeJoined = match.Groups["time"];
var userName = match.Groups["name"];
var ip = match.Groups["ip"];