c#:正则匹配 分组匹配识别

背景

根据某一特定格式对文本进行识别,其中,该格式由多个部分组成,分别对每个部分进行分离。使用group.

分组

按索引获取分组内容

每个括号包起来的地方就是一个分组,

Match m1 = Regex.Match(fullText, pattern1);
if (m1.Success)
{
	GroupCollection groups = m1.Groups;
     string msg1 = m1.Value;
     string msg2 = groups.Count.ToString(); //分组个数
     string msg3 = groups[0].Value;//获取的分组内容
}

根据索引对分组内容进行获取,各个分组又是按什么顺序排的呢,首先第一个:group[0]保存的是完整的识别内容。后面开始,就是根据左括号的前后来排列
例如(A(B( C)))(DE(F))
从group[1]开始识别的分别是:
(A(B( C)))
(B( C))
( C)
(DE(F))
(F)

按命名获取分组内容

按索引毕竟比较麻烦,一旦中间修改了匹配字符串内容,就会涉及其他的代码部分,因此,给需要的分组起名十分重要。
取名的格式
(?patternStr)
例如

" "^(?" + mainAuthor + ")(?" + name + ")(?" + code + ")

对于我的正则表达式:我给每个部分分组起名,正则匹配成功后,我将结果进行分组,就可以获取匹配到的各部分值。
例如,上面的mainAuthor,分组后,使用groups[“mainAuthor”].Value获取匹配得到的内容。

你可能感兴趣的:(c#)