希望能匹配成对出现的<< >>直接之间的内容,里面可以嵌套<< >>,如
<<Type /Page/Parent 3 0 R/Resources >>
如
<<Type /Page/Parent 3 0 R/Resources << /Font << /F1 7 0 R >>/ProcSet 6 0 R >>/MediaBox [0 0 612 792] /Contents 5 0 R>>
<<Type /Page/Parent 3 0 R/Resources >>
如
<<Type /Page/Parent 3 0 R/Resources << /Font << /F1 7 0 R >>/ProcSet 6 0 R >>/MediaBox [0 0 612 792] /Contents 5 0 R>>
用程序递归吧。
MatchCollection mc = Regex.Matches(yourStr, @"<[^<>]*(((?'Tag'<)[^<>>]*)+((?'-Tag'>)[^<>]*)+)*(?(Tag)(?!))>");
foreach (Match m in mc)
{
richTextBox2.Text += m.Value + "\n";
}
要么就是<>成对出现
---------------------------------------------
MSN:[email protected]请给我一个与您交流的机会!
要么就是<>成对出现
------------------------------
如果是这样,那用我上面写的是可以的但是有一点,如果源字符串中可能单独出现<...>这样的,而不是包含在<<...>>内的情况也会被匹配出来,那样的话,真接提取比较困难,可以先把<<和>>替换成特殊字符,然后用上面的方法匹配,匹配之后再重新替换回来
要么就是<>成对出现
------------------------------
如果是这样,那用我上面写的是可以的但是有一点,如果源字符串中可能单独出现<...>这样的,而不是包含在<<...>>内的情况也会被匹配出来,那样的话,真接提取比较困难,可以先把<<和>>替换成特殊字符,然后用上面的方法匹配,匹配之后再重新替换回来
你对单独的< >处理的不是很好
如字符串 <\<\() >>只能匹配到自己写了个((?'Tag'<<)[\s\S]*?(?=(<<)|(>>)))(((?'Tag'<<)[\s\S]*?(?=(<<)|(>>)))|([\s\S]*?(?=(<<)|(>>))(?'-Tag'>>)))*(?(Tag)(?!))
你对单独的< >处理的不是很好
字符串<</Key (\<\<\() >>
只能匹配到 <\<\() >>