背景
根据某一特定格式对文本进行识别,其中,该格式由多个部分组成,分别对每个部分进行分离。使用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)
。
按命名获取分组内容
按索引毕竟比较麻烦,一旦中间修改了匹配字符串内容,就会涉及其他的代码部分,因此,给需要的分组起名十分重要。
取名的格式
(?<name>patternStr)
例如
" "^(?<mainAuthor>" + mainAuthor + ")(?<name>" + name + ")(?<code>" + code + ")
对于我的正则表达式:我给每个部分分组起名,正则匹配成功后,我将结果进行分组,就可以获取匹配到的各部分值。
例如,上面的mainAuthor,分组后,使用groups[“mainAuthor”].Value获取匹配得到的内容。