正则表达式 最小 匹配
[p:first] <span lang= "zh-cn "> | </span> <<[/p]
[p:p]<<[/p] [p:1][p:2][p:3][p:4][p:5] [p:next]>>[/p]
[p:last]>>|[/p]
即要成对匹配[p:xxx]和[/p]:
[p:first] <span lang= "zh-cn "> | </span> <<[/p]
[p:p]<<[/p]
[p:next]>>[/p]
[p:last]>>|[/p]
而不匹配:
[p:1][p:2][p:3][p:4][p:5]
我是这样做的:
\[p:(? <pv> .*?)\](? <pm> .*?)\[/p\]
这里,我要取得pv和pm的值,谢谢。
------解决方案--------------------这个式子很诡异,我也只好出此下策了
string yourStr = richTextBox1.Text;
yourStr = yourStr.Replace( "[/p] ", "[/p]\n ");
MatchCollection mc = Regex.Matches(yourStr, @ "\[p:[^\]]*?\](?!.*?\[p:[^\]]*?\].*?\[/p\]).*?\[/p\] ", RegexOptions.IgnoreCase);
foreach (Match m in mc)
{
richTextBox2.Text += m.Value + "\n ";
}
------解决方案--------------------\[p:(? <pv> [^\]]*?)\](?!.?\[p:[^\]]*?\].*?\[/p\])(? <pm> .*?)\[/p\]