C#Regex需要用于字符串匹配的模式

时间:2010-09-09 22:37:01

标签: c# .net regex

这是我第二次尝试得到这个答案,因为我第一次把它搞砸了:s你可以猜到我是regex的新手

基本上,该字符串包含许多由“\”分隔的单词。所以例如

\gyifgy8i\gyigyi9g\player_0\k1ng*tar%\gp86gg78.\g79g\player_1\th3dadY>\gyigyigiy\huiohgiu\player_2\j0k$r\g68g6o9g\987pgh890\player_3\PLAYERNAME

我需要一个可以匹配\ player_n \之后每个单词的模式,其中n是一个数字。所以从上面我想匹配k1ng * tar%和th3dadY>和j0k $ r(没有\任何一方)。这些是来自UDP查询的播放器名称,udp查询用“\”表示每个值。正如您在上面所见,每个玩家名称总是在\ player_n \之前。

最初我被建议使用:

string rex = @"[\w]*[\\]player_[0-9]+[\\](?<name>[A-Za-z0-9]*)\b";
        Regex re = new Regex(rex);


            for (Match m = re.Match(stringData); m.Success; m = m.NextMatch())
        {

            players[count] = (m.Groups["name"]).ToString();
            textBox1.Text += players[count] + "\r\n";
            MessageBox.Show((m.Groups["name"]).ToString());
        }

上述模式有效,但仅限于玩家名称使用的是A-Za-z0-9。我当时没有意识到playername可以包含任何角色。有人可以为我修改这个模式,正则表达式超出我的范围:&lt;

提前致谢。

1 个答案:

答案 0 :(得分:3)

如果正则表达式的其余部分按预期工作,则可以替换

(?<name>[A-Za-z0-9]*)

(?<name>[^\\]*)

将匹配除\

之外的所有内容