谁告诉我以下正则表达式匹配是如何一步一步进行的,谢谢。
string input = "PRIVATE11xxPRIVATE22xx123PRIVATE33";
string pattern = @"(?<Pvt>PRIVATE)?(?(Pvt)(\d+)|([^\d]+))";
string publicDocument = null, privateDocument = null;
foreach (Match match in Regex.Matches(input, pattern))
{
if (match.Groups[1].Success)
{
privateDocument += match.Groups[1].Value + "\n";
}
else
{
publicDocument += match.Groups[2].Value + "\n";
}
}
Console.WriteLine("Private Document:");
Console.WriteLine(privateDocument);
Console.WriteLine("Public Document:");
Console.WriteLine(publicDocument);
------解决思路----------------------
一个正则表达式是有可能匹配到一个字符串里面的多个结果的~
如正则表达式A, 字符串ABACAA,那么就会匹配到4个~~~
然后然后循环输出
这就是上面的~代码~~的意思
------解决思路----------------------
(?<Pvt>PRIVATE)?(?(Pvt)(\d+)
------解决思路----------------------
([^\d]+))
(?<Pvt>PRIVATE)匹配PRIVATE字符串,并且可以通过组Pvt来获取
(?<Pvt>PRIVATE)?这个后面的?代表前面括号内的可以出现一次或0次
(?(Pvt)(\d+)
------解决思路----------------------
([^\d]+)) 这是组合组了