Regex не работает должным образом

хорошо, позвольте мне объяснить текущую ситуацию:

Я получаю некоторые строки из COM1, я отфильтровал это, чтобы показать только необходимую информацию, и поэтому у меня есть только такие строки:

NTF,IDAS,RXSTAT,IND,01-0100,01-0131,+,-63,81

теперь проблема в том, что в этом примере мне нужно получить число: 131 и ТОЛЬКО это число,

Я пытался добиться этого с помощью Regex, но без успеха.

У меня это как мое Regex:

Regex.Match(line, ",01-0100,01-0([0-9]{3})").Value.ToString()

и ожидаем, что вернуть мне

131

но вместо этого он возвращает:

,01-0100,01-0131

может ли кто-нибудь помочь мне с этой проблемой?

1 ответ

Вы используете неверный индекс группы. Группа 0 - это полное совпадение, группа 1 - значение для первой группы.

Regex.Match(line, ",01-0100,01-0([0-9]{3})").Groups[1].Value.ToString()

Вы также можете назвать свою группу:

Regex.Match(line, ",01-0100,01-0(?<mygroup>[0-9]{3})").Groups["mygroup"].Value.ToString()
</mygroup>

О, и поскольку групповое значение всегда является строкой:

Regex.Match(line, ",01-0100,01-0(?<mygroup>[0-9]{3})").Groups["mygroup"].Value;
</mygroup>

licensed under cc by-sa 3.0 with attribution.