如果是我,不会用正则表达式来做这件事。分析DOM对象结构或者做XSL样式替换会简单得多。
正则表达式是验证一个字符串是否拥有某种特定的样式 (Pattern),比如电子邮件地址,都会有@,@后面都是xx.xxx或xx.xxx.xxx之类,使用正则表达式可以灵活又精确地描述这种pattern。比如对电子邮件地址,可以描述成:^([\w-]+\.)*?[\w-]+@[\w-]+\.([\w-]+\.)*?[\w]+$,等等。
它不是用来抽取字符串的,虽然验证样式往往是替换或抽取字符串的前一步。
如果你一定要使用正则表达式,无非就是用
(.*?)找到这个tag,然后再用字符串处理剥出中间的文字。
如果style里面的内容不是固定的,可以这样查找任意样式的标记
<\s*span[^>]*>(.*?)<\s*/\s*span>
另外,注意汉字需要用4位 unicode 16进制代码替换,格式如:\u0020。
出现乱码了,不知道你是什么意思,如果你是想从html文本中提取出纯文本的话,给你个方法你调用一下:
public string NoHTML(string Htmlstring)
{
//删除脚本
Htmlstring = Htmlstring.Replace("\r\n", "");
Htmlstring = Regex.Replace(Htmlstring, @"
Htmlstring = Regex.Replace(Htmlstring, @"
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, @"