有一段文字,比如:<p>11</p>aaa<p>22</p>bb<p>33</p>
我想写一个正则表达式来匹配,分别输出如下结果:
<p>11</p>
<p>22</p>
<p>33</p>
我的写法如下:
MatchCollection mc; string result = "<p>11</p>aaa<p>22</p>bb<p>33</p>";
Regex r = new Regex("<p>.*</p>");
mc = r.Matches(result); for (int i = 0; i < mc.Count; i++)
{
Response.write(mc[i].Value+"<br>");
}
上面的运行结果直接显示::<p>11</p>aaa<p>22</p>bb<p>33</p>,不知这个正则表达式要怎么写,谢谢.
我想写一个正则表达式来匹配,分别输出如下结果:
<p>11</p>
<p>22</p>
<p>33</p>
我的写法如下:
MatchCollection mc; string result = "<p>11</p>aaa<p>22</p>bb<p>33</p>";
Regex r = new Regex("<p>.*</p>");
mc = r.Matches(result); for (int i = 0; i < mc.Count; i++)
{
Response.write(mc[i].Value+"<br>");
}
上面的运行结果直接显示::<p>11</p>aaa<p>22</p>bb<p>33</p>,不知这个正则表达式要怎么写,谢谢.
解决方案 »
- C# switch()语句分支过多时,有没有别的方式实现呢?
- 在窗体上如何给 动态生成的控件定位啊?
- 求Microsoft.Jet.OLEDB.4.0 在win7 64位下未注册问题解决方法
- 如果使纯种处于挂起状态
- 怎样设置才能双击.myext类型的文件图标就由指定的程序打开?
- 莫名其妙的问题,请指教
- 请问一个正则问题:匹配含有指定字符的<td>。
- 哪位大侠知道怎样把计算机的快照功能禁止掉?
- 程序中在主窗体中打开多个窗体(不是mdi);怎样使得子窗体不会躲到主窗体后面去呢?
- 有关 SqlDataReader 类 的问题
- C# 上传图片至远程计算机
- VS带的"安装与部署"真的这么土吗?能否从安装类中指定:自定义文件夹 的路径?
Regex reg = new Regex(@"(?is)<p[^>]*>(?:(?!</?p\b).)*</p>");
MatchCollection mc = reg.Matches(test);
foreach (Match m in mc)
{
richTextBox2.Text += m.Value + "\n";
}
贪婪模式就是在匹配成功的前提下,尽可能多的匹配
非贪婪模式就是在匹配成功的前提下,尽可能少的匹配
Regex r = new Regex(" <p>[0-9]* </p>");
谢谢,这个方法可以实现,请问lxcnn,除了这个非贪婪模式外,还有没有其他效率更高的方法?再次感谢.
2楼给出的才是非贪婪模式的实现这两种方式,在匹配失败的情况下效率基本上是没什么区别的
但是在匹配成功的情况下,还是1楼的实现方式效率要高当然,如果你能确定<p...>和</p>之间的字符串很少,就如你的例子一样,那这两种写法用哪种其实无所谓了,基本上感觉不到效率差异的关于原理,楼主可以看下《精通正则表达式(第三版)》,后面我也可以整理一下