我在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
答案 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"];