C#.NET用正则表达式提取<span style="font-size: 14.0pt;font-family: 宋体;">泥料:原矿清水泥</span>中值

比较急,请高手指教。。。

如果是我,不会用正则表达式来做这件事。分析DOM对象结构或者做XSL样式替换会简单得多。

正则表达式是验证一个字符串是否拥有某种特定的样式 (Pattern),比如电子邮件地址,都会有@,@后面都是xx.xxx或xx.xxx.xxx之类,使用正则表达式可以灵活又精确地描述这种pattern。比如对电子邮件地址,可以描述成:^([\w-]+\.)*?[\w-]+@[\w-]+\.([\w-]+\.)*?[\w]+$,等等。

它不是用来抽取字符串的,虽然验证样式往往是替换或抽取字符串的前一步。

如果你一定要使用正则表达式,无非就是用
<span style="font-size:\s14\.0pt;font-family:宋体;">(.*?)</span>找到这个tag,然后再用字符串处理剥出中间的文字。
如果style里面的内容不是固定的,可以这样查找任意样式的<span>标记
<\s*span[^>]*>(.*?)<\s*/\s*span>

另外,注意汉字需要用4位 unicode 16进制代码替换,格式如:\u0020。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-21
出现乱码了,不知道你是什么意思,如果你是想从html文本中提取出纯文本的话,给你个方法你调用一下:

public string NoHTML(string Htmlstring)
{
//删除脚本
Htmlstring = Htmlstring.Replace("\r\n", "");
Htmlstring = Regex.Replace(Htmlstring, @"<script.*?</script>", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"<style.*?</style>", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"<.*?>", "", RegexOptions.IgnoreCase);
//删除HTML
Htmlstring = Regex.Replace(Htmlstring, @"<(.[^>]*)>", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"([\r\n])[\s]+", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"-->", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"<!--.*", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(quot|#34);", "\"", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(amp|#38);", "&", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(lt|#60);", "<", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(gt|#62);", ">", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(nbsp|#160);", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(iexcl|#161);", "\xa1", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(cent|#162);", "\xa2", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(pound|#163);", "\xa3", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(copy|#169);", "\xa9", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&#(\d+);", "", RegexOptions.IgnoreCase);
Htmlstring = Htmlstring.Replace("<", "");
Htmlstring = Htmlstring.Replace(">", "");
Htmlstring = Htmlstring.Replace("\r\n", "");
//Htmlstring = HttpContext.Current.Server.HtmlEncode(Htmlstring).Trim();
return Htmlstring;
}
第2个回答  2012-04-24
提取'/span>' ? 那正则就直接是/pan>就好了 . 用的时候直接 Regex.Match(字符串, 正则表达式).Groups[0].Value 就可以提取了