I search from the web and I have a partial solution only, so I make this question.
Input:
[A] this is A, and , [B] this is B, and hello , [C] this is C - From Here
I want to have a list:
list[0] == "this is A, and"
list[1] == "this is B, and hello"
list[2] == "this is C"
list[3] == "From Here"
I find that I should have something like this:
Regex pattern = new Regex(@"^\[A\] (.*) , \[B\] (.*) , \[C\] (.*) - (.*)$");
List<string> matches = pattern.Matches(input).OfType<Mathc>().Select(m => m.value).Distinct().ToList();
But it is not working. I would like to ask how to make it works. Thanks.

[A],[B], etc. is variable?Groupsof the resultingMatchCollectionwhich only has one match. Note the first group will be the entire match, then each of your capture groups.