Регулярное выражение для получения текста после подчеркивания, которое используется в качестве разделителя - PullRequest
0 голосов
/ 22 декабря 2011

У меня есть такая строка:

  • бла-бла-бла_0123

Так что в основном мне нужно регулярное выражение, чтобы получить эти 4 числовых значения после разделителя _.Я уверен, что это супер просто, но Regex выглядит для меня как иностранный язык!

Ответы [ 2 ]

4 голосов
/ 22 декабря 2011

Это было бы этим регулярным выражением:

_([0-9]+)

(группа захвата 1 содержит номер.)


Или, если ваш движок поддерживает lookbehinds (что, насколько я помню, не относится к C #):

(?<=_)[0-9]+

(группа захвата 0 содержит номер.)


(...) обозначает группу уловов. В вашем объекте сопоставления вы можете либо получить к ним доступ по их индексу через yourMatch.Groups[index].Value, либо если вы назвали свои группы перехвата через (?<name>...) по их имени, например yourMatch.Groups[name].Value. В этом случае значение будет содержать то, что соответствовало подвыражению этой конкретной группы (в вашем случае это 4-значное число).


Также, если вы хотите, чтобы регулярное выражение совпадало, если это ровно 4 цифровых символа,
затем замените + на {4}\b

Редактировать: Как правильно заметил Алан Мур, они называются «группа захвата», а не «группа захвата». Мне нужно больше спать.

2 голосов
/ 22 декабря 2011

Регулярное выражение: _(?<number>[0-9]+)

var match = new Regex("_(?<number>[0-9]+)").Match("blah blah blah_0123");

if(match.Success)
{
    var value = match.Groups["number"].Value;
    var number = Int.Parse(value);

    Console.WriteLine(value);  // this will write "0123"
    Console.WriteLine(number); // this will write "123"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...