<P><BR><BR><BR>&nbsp;&nbsp;&nbsp; 日本渡部药品公司利用从猴头菇中提取的多糖类“β-D-葡聚糖”制成抗癌食品,具有广阔的市场前景。</P> 
<P></P> 
<P>&nbsp;&nbsp;&nbsp; 猴头菇是一种担子菌类,可入中药,主治消化不良、身体虚弱等症。据日本静冈大学科研人员介绍,他们通过动物实验证实,猴头菇中含有5种异“β-D-葡聚糖”,它们能够同葡萄糖、甘露糖醇和半乳糖等多种糖类结合,免疫活性高,有一定的抗癌作用。科研人员说,上述物质并不直接攻击癌细胞,而是增强人体的免疫机能,抑制癌细胞的增殖。<BR></P>
<P><BR><BR><BR>&nbsp;&nbsp;&nbsp; 日本渡部药品公司利用从猴头菇中提取的多糖类“β-D-葡聚糖”制成抗癌食品,具有广阔的市场前景。</P> 
<P></P> 
<P>&nbsp;&nbsp;&nbsp; 猴头菇是一种担子菌类,可入中药,主治消化不良、身体虚弱等症。据日本静冈大学科研人员介绍,他们通过动物实验证实,猴头菇中含有5种异“β-D-葡聚糖”,它们能够同葡萄糖、甘露糖醇和半乳糖等多种糖类结合,免疫活性高,有一定的抗癌作用。科研人员说,上述物质并不直接攻击癌细胞,而是增强人体的免疫机能,抑制癌细胞的增殖。<BR></P>问题如下:
有以上一段文章,我要取出里面有某个关键字的一段文章?例:
如果有一关键字为 "猴头菇" 就找出第一段 "<P><BR><BR><BR>&nbsp;&nbsp;&nbsp; 日本渡部药品公司利用从猴头菇中提取的多糖类“β-D-葡聚糖”制成抗癌食品,具有广阔的市场前景。</P> "如果关键字有多个如 "猴头菇" "消化不良" 那我就要取出这段里有这两个关键字的那段,"<P>&nbsp;&nbsp;&nbsp; 猴头菇是一种担子菌类,可入中药,主治消化不良、身体虚弱等症。据日本静冈大学科研人员介绍,他们通过动物实验证实,猴头菇中含有5种异“β-D-葡聚糖”,它们能够同葡萄糖、甘露糖醇和半乳糖等多种糖类结合,免疫活性高,有一定的抗癌作用。科研人员说,上述物质并不直接攻击癌细胞,而是增强人体的免疫机能,抑制癌细胞的增殖。<BR></P>
"
不知大家没有明白我的意思,我是做的功能是一个搜索,要提取搜索结果中的数据显示出来。如google,百度等

解决方案 »

  1.   

    先说下思路,把你的关键字放到数组里,然后用正则提取段落,即<p> </p>之间的。
    如果提取的段落和每个关键字都比配(包含的关系),biggo
    简单..
      

  2.   

    (?:\<BR\>|\<P\>|\s)+&nbsp;&nbsp;&nbsp; (\w+?)(?:\<BR\>|\<\/P\>|\s)匹配的内容从前面的<BR><p>&nbsp;等等 到 后面的<BR></P>等 如果想要纯内容 就提取每个匹配的第一组就行了
      

  3.   

    通过list<String>保存关键字,再用正则匹配
    参考
      

  4.   

    try...
     static void Main(string[] args)
            {
                Regex re = new Regex(@"((?<=<P>).*?(?=</P>))*");
                string s = @"<P> <BR> <BR> <BR>&nbsp;&nbsp;&nbsp; 日本渡部药品公司利用从猴头菇中提取的多糖类“β-D-葡聚糖”制成抗癌食品,具有广阔的市场前景。 </P>
    <P> </P>
    <P>&nbsp;&nbsp;&nbsp; 猴头菇是一种担子菌类,可入中药,主治消化不良、身体虚弱等症。据日本静冈大学科研人员介绍,他们通过动物实验证实,猴头菇中含有5种异“β-D-葡聚糖 ”,它们能够同葡萄糖、甘露糖醇和半乳糖等多种糖类结合,免疫活性高,有一定的抗癌作用。科研人员说,上述物质并不直接攻击癌细胞,而是增强人体的免疫机能,抑制癌细胞的增殖。 <BR> </P>
    <P> <BR> <BR> <BR>&nbsp;&nbsp;&nbsp; 日本渡部药品公司利用从猴头菇中提取的多糖类“β-D-葡聚糖”制成抗癌食品,具有广阔的市场前景。 </P>
    <P> </P>
    <P>&nbsp;&nbsp;&nbsp; 猴头菇是一种担子菌类,可入中药,主治消化不良、身体虚弱等症。据日本静冈大学科研人员介绍,他们通过动物实验证实,猴头菇中含有5种异“β-D-葡聚糖 ”,它们能够同葡萄糖、甘露糖醇和半乳糖等多种糖类结合,免疫活性高,有一定的抗癌作用。科研人员说,上述物质并不直接攻击癌细胞,而是增强人体的免疫机能,抑制癌细胞的增殖。 <BR> </P>";
                List<string> key = new List<string>(new string[] { "猴头菇","消化不良" });            MatchCollection mc = re.Matches(s);
                String z = String.Empty;
                bool flag = false;          
                foreach (Match m in mc)
                {
                    z = m.Value;
                    if (z.Length > 0)
                    {                    
                        flag = false;
                        foreach (string str in key)
                        {
                            if (z.IndexOf(str) <= -1)
                            {
                                flag = true;
                                break;
                            }                    }
                        if (!flag)
                            Console.WriteLine(z);
                    }
                }
            }
      

  5.   


    咔咔,看到你写的了,效率上可以提高一些,另外动态生成正则时,动态参数需经过处理才可以用,否则可能会抛异常string[] keys = textBox1.Text.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);  //关键字列表,输入时以空格分割
    StringBuilder key = new StringBuilder(1024);
    foreach (string k in keys)
    {
        key.Append(@"(?=(?:(?!</p\b).)*" + Regex.Escape(k) + @")");
    }
    Regex regKey = new Regex(@"(?is)<p[^>]*>" + key.ToString() + @"(?:(?!</p\b).)*</p>");
    Match m = regKey.Match(yourStr);
    if (m.Success)
    {
        richTextBox2.Text += m.Value + "\n";
    }
      

  6.   

    谢谢各位高手,lxcnn 您的方法刚好,再次感谢各位关注,结贴给分