C # regex нужны символы после \ player_n \ - PullRequest
0 голосов
/ 09 сентября 2010

Мне нужен шаблон регулярных выражений, который будет соответствовать следующему.

Я получаю ответ от UDP-сервера, это очень длинная строка, и каждое слово отделяется \, например:

\g79g97\g879o\wot87gord\player_0\name0\g6868o\g78og89\g79g79\player_1\name1\gyuvui\yivyil\player_2\name2\g7g87\g67og9o\v78v9i7

Мне нужны строки после \player_n\, поэтому в приведенном выше примере мне понадобятся name0, name1 и name3,

Я знаю, что это второй вопрос дня регулярного выражения, но у меня есть книга (Освоение регулярных выражений) на заказ! Спасибо.

UPDATE. Подойдет шаблон регулярного выражения неуловимого, и я могу добавить совпадение (0) в текстовое поле. Однако что, если я хочу добавить все совпадения в текстовое поле?

textBox1.Text += match.Captures[0].ToString(); //this works fine.

Как добавить "все" match.captures в текстовое поле? : s извините за то, что был таким хромым, этот класс Regex является совершенно новым для меня.

Ответы [ 3 ]

3 голосов
/ 09 сентября 2010

Попробуйте это:

\\player_\d+\\([^\\]+)
1 голос
/ 09 сентября 2010

я думаю, что этот тестовый образец может помочь вам

string inp = @"\g79g97\g879o\wot87gord\player_0\name0\g6868o\g78og89\g79g79\player_1\name1\gyuvui\yivyil\player_2\name2\g7g87\g67og9o\v78v9i7";
string rex = @"[\w]*[\\]player_[0-9]+[\\](?<name>[A-Za-z0-9]*)\b";
Regex re = new Regex(rex);
Match mat = re.Match(inp);
 for (Match m = re.Match(inp); m.Success; m = m.NextMatch())
{
     Console.WriteLine(m.Groups["name"]);
}

вы можете взять имя игрока из m.Groups["name"]

1 голос
/ 09 сентября 2010

Чтобы получить только имя игрока, вы можете использовать:

(?<=\\player_\d+\\)[^\\]+

Это (?<=\\player_\d+\\) - то, что называется позитивным взглядом. Он гарантирует, что фактическому совпадению [^\\]+ предшествует выражение в скобках.

В этом случае это относится только к нескольким движкам регулярных выражений (к счастью, среди них .NET), поскольку содержит выражение переменной длины (из-за \d+). Большинство движков регулярных выражений поддерживают только просмотр заданной длины.

В любом случае, поиск не всегда лучший подход к этой проблеме, группы соответствия проще для чтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...