/ / Дві паролі групи в регулярному виразі - c #, регулярний вираз

Дві патчівці в Regex - c #, regex

У мене є така рядок, як

(1)ABC(Some other text)
(2343)DEFGHIJ
(99)Q

Я хотів виділити регулярний вираз, який би захопив ці рядки на дві групи, як це

ist: (1) 2nd: ABC(Some other text)
1st: (2343) 2nd: DEFGHIJ
ist: (99) 2nd: Q

Тому я написав цей Regex

var regex new Regex("^\((\d+)(.*)\)");
Match match = regex.Match(str);

Але замість двох груп я сподівався, що отримаю три групи

У першому прикладі я отримую

(1)ABC(Some other text)
1
)ABC(Some other text

Що не так?

Відповіді:

2 для відповіді № 1

Регулярний вираз, який ви шукаєте, ймовірно

@"^((d+))(.*)"

Ви змінили порядок (. Зауважте, що групи складатимуть 3, тому що, як хтось вказав, група 0 - це весь відповідний текст. Так

string str = "(1)ABC(Some other text)";
var regex = new Regex(@"^((d+))(.*)");
Match match = regex.Match(str);

if (match.Success)
{
string gr1 = match.Groups[1].Value; // (1)
string gr2 = match.Groups[2].Value; // (Some other text)
}