原字符串:<!--OutList{6,true,8,20,show.aspx}-->测试一<!--OutListEnd--><!--OutList{6,true,8,20,show.aspx}-->测试二<!--OutListEnd-->
1:<!--OutList(.*)OutListEnd--> 这种可能把整个字符串都匹配成一条记录了,我想要的效果是能把测试一和测试二分别列出来.
2:<!--OutList(.*[10,40])OutListEnd--> 这种行不通,都找不到。。
测试代码:
MatchCollection mc;
Regex r = new Regex("<!--OutList(.*)OutListEnd-->");
mc = r.Matches("<!--OutList{6,true,8,20,show.aspx}-->测试一<!--OutListEnd--><!--OutList{6,true,8,20,show.aspx}-->测试二<!--OutListEnd-->");
string str = "<!--OutList{6,true,8,20,show.aspx}-->测试一<!--OutListEnd--><!--OutList{6,true,8,20,show.aspx}-->测试二<!--OutListEnd-->";
Response.Write("原字符串:" + str + "<br>");
string[] s = { "替换一", "替换二"};
for (int i = mc.Count - 1; i >= 0; i--)
{
str = str.Remove(mc[i].Index,
mc[i].Value.Length);
str = str.Insert(mc[i].Index, s[i]);
}
Response.Write("新字符串:" + str);
<!--OutList[^<]*-->(.*?)<!--OutListEnd-->
谢谢!