日期:2014-05-17  浏览次数:20403 次

请教正则表达

<p style="MARGIN: 0in 0in 0pt" class="MsoNormal">
  <span style="COLOR: #1f497d">
  <span style="FONT-FAMILY: Calibri">Hello World</span>
  </span>
</p>
或者
<p>Hello World<p>

想用正则表达式,匹配出其中的正文"Hello World"。

请问这个表达式该如何写?

------解决方案--------------------
额 var str = "html";
str = Regex.Replace("<[^>]+>","");

这个似乎就可以了吧
------解决方案--------------------
(?is)<span[^>]+>([^<]+)</span>
(?is)<p>([^<]+)<p>

取group[1].value
------解决方案--------------------
string temp = @"<p style=""MARGIN: 0in 0in 0pt"" class=""MsoNormal"">
<span style=""COLOR: #1f497d"">
<span style=""FONT-FAMILY: Calibri"">Hello World</span>
</span>
</p>";
Console.WriteLine(Regex.Match(temp, @"(?is)(?<=<p.*?>)(?!\s*<)[^<]+").Value);
------解决方案--------------------
二楼可以满足楼主的需求
但是我想楼主更想看到匹配而非替换
所以4楼备份
------解决方案--------------------
去掉HTML标签就是了

C# code

 /// <summary>
        /// 去掉HTML标签
        /// </summary>
        /// <param name="strHtml"></param>
        /// <returns></returns>
        public static string stripHtml(string strHtml)
        {
            Regex objRegExp = new Regex("<(.|\n)+?>");
            string strOutput = objRegExp.Replace(strHtml, "");
            strOutput = strOutput.Replace("<", "");
            strOutput = strOutput.Replace(">", "");
            return strOutput;
        }

------解决方案--------------------
C# code

@"(?<=<p[^>]*>(\s*<[^<>]+>)*)[^<>]+(?=(<[^<>]+>\s*)*</p>)"

------解决方案--------------------
可以试试
探讨
额 var str = "html";
str = Regex.Replace("<[^>]+>","");

这个似乎就可以了吧