当前位置:编程学习 > C#/ASP.NET >>

紧急求一个正则表达式 哪位大侠来看看

要做一个正则表达式 要求匹配自定义小括号(section) (/section) 和(content)(/content)标签 

从而取出里面的所有html文本---

1. (section) 到 (/section) 内所有html文本
2. (content) 到 (/content) 内所有html文本


文本如下

<p>(section)<p><ul>概述</ul></p>(/section)</p>
<p>(content)
</p><ul>
    <li>高血压的定义:成人收缩压≥140 mmHg和/或舒张压≥90 mmHg,是引起心血管疾病的一个重要危险因素</li>
    <li>高血压前期的定义:成人收缩压为120~139 mmHg或舒张压为80~89 mmHg。这类患者需要咨询有利于健康的生活方式的改变,以期预防或延迟高血压的发生,而且应每年至少随访一次</li>
</ul><p>
(/content)</p>

<p>(section)<p><ul>紧急措施</ul></p>(/section)</p>

<p>(content)</p>
<ul>
    <li>高血压的定义:成人收缩压≥140 mmHg和/或舒张压≥90 mmHg,是引起心血管疾病的一个重要危险因素</li>
    <li>高血压前期的定义:成人收缩压为120~139 mmHg或舒张压为80~89 mmHg。这类患者需要咨询有利于健康的生活方式的改变,以期预防或延迟高血压的发生,而且应每年至少随访一次</li>
    <li>大约90%的高血压患者病因不明,无并发症的原发性高血压是无症状的术前高血压与围手术期的发病率和死亡率明显增加有关,但尚不清楚术前高血压处置是否会降低风险</li>
</ul>
<p>(/content)</p> --------------------编程问答-------------------- sf,jf --------------------编程问答--------------------

(?s)(?:(?<=\(section\)).*?(?=\(/section\)))|(?:(?<=\(content\)).*?(?=\(/content\)))
--------------------编程问答--------------------

section([\s\S]*?)section    取出1
content([\s\S]*?)content    取出2

--------------------编程问答-------------------- 取不到 (content) 到 (/content) 内的html文本 

只可以取到(section) 到 (/section) 内的html文本 

望大虾 检查下
--------------------编程问答--------------------

string strContent = @"<p>(section) <p> <ul>概述 </ul> </p>(/section) </p> 
<p>(content) 
</p> <ul> 
    <li>高血压的定义:成人收缩压≥140 mmHg和/或舒张压≥90 mmHg,是引起心血管疾病的一个重要危险因素 </li> 
    <li>高血压前期的定义:成人收缩压为120~139 mmHg或舒张压为80~89 mmHg。这类患者需要咨询有利于健康的生活方式的改变,以期预防或延迟高血压的发生,而且应每年至少随访一次 </li> 
</ul> <p> 
(/content) </p> 

<p>(section) <p> <ul>紧急措施 </ul> </p>(/section) </p> 

<p>(content) </p> 
<ul> 
    <li>高血压的定义:成人收缩压≥140 mmHg和/或舒张压≥90 mmHg,是引起心血管疾病的一个重要危险因素 </li> 
    <li>高血压前期的定义:成人收缩压为120~139 mmHg或舒张压为80~89 mmHg。这类患者需要咨询有利于健康的生活方式的改变,以期预防或延迟高血压的发生,而且应每年至少随访一次 </li> 
    <li>大约90%的高血压患者病因不明,无并发症的原发性高血压是无症状的术前高血压与围手术期的发病率和死亡率明显增加有关,但尚不清楚术前高血压处置是否会降低风险 </li> 
</ul> 
<p>(/content) </p>";

            Regex re = new Regex(
@"(?s)(?:(?<=\(section\)).*?(?=\(/section\)))|(?:(?<=\(content\)).*?(?=\(/content\)))");
            foreach (Match mc in re.Matches(strContent))
            {
                string strValue = mc.Value;
            }



看看strValue的值,四个,是正确的,给出不正确的数据 --------------------编程问答--------------------
引用 4 楼 mxphoenixiao 的回复:
取不到 (content) 到 (/content) 内的html文本

 只可以取到(section) 到 (/section) 内的html文本

 望大虾 检查下

可以取到,前面的(?s)不能丢 --------------------编程问答-------------------- 多谢独孤求败 波导终结者
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,