C#: 获取网页中匹配代码的正则 (获得字符串中开始和结束字符串中间得值)
2010-10-22 11:16
573 查看
如:
<div>1div</div>
<a>1a</a>
<p>1p</p>
<p>2p</p>
<div>2div</div>
<a>2a</a>
<p>3p</p>
<p>4p</p>
<a>3a</a>
<p>5p</p>
<div>3div</div>
<a>4a</a>
<p>6p</p>
<span>1span</span>
现在的问题是:有N多DIV,N多p,N多A标签以及最多1个span,想只获取所有p里的内容以及最后一个span里的内容(其中获取P的内容有一个条件,那就是只有前面有一个A标签的P的内容才会被获取),span或许有或许没有,如果有就获取,如果没有就不获取求:
C#的正则表达式
using System.Text.RegularExpressions;
代码
Match mm = Regex.Match(html, @"<table[^>]*>(((<table[^>]*>(?<o>)|</table>(?<-o>)|(?!</?table)[\s\S])*)(?(o)(?!)))\b" + "会员输赢资料" + @"\b(?:(?!<table[^>]*>)[\s\S])*?(((<table[^>]*>(?<o>)|</table>(?<-o>)|(?!</?table)[\s\S])*)(?(o)(?!)))</table>", RegexOptions.IgnoreCase);
if (mm.Success)
{
//MessageBox.Show(mm.Value);
//MatchCollection mdd = GetMidValue("<td", "</td>", mm.Value);
//foreach (Match m in mdd)
//{
// for (int i = 1; i < m.Groups.Count; i++)
// {
// restult += m.Groups[i].Value;//就是你要的结果
// }
//}
MatchCollection mc = Regex.Matches(mm.Value, @"<td[^>]*>\s*(?<content>[\s\S]*?)\s*</td>", RegexOptions.IgnoreCase);
foreach(Match m in mc)
{
for (int i = 1; i < m.Groups.Count; i++)
{
restult += m.Groups[i].Value + "\n";
}
}
MessageBox.Show(restult);
}
<div>1div</div>
<a>1a</a>
<p>1p</p>
<p>2p</p>
<div>2div</div>
<a>2a</a>
<p>3p</p>
<p>4p</p>
<a>3a</a>
<p>5p</p>
<div>3div</div>
<a>4a</a>
<p>6p</p>
<span>1span</span>
现在的问题是:有N多DIV,N多p,N多A标签以及最多1个span,想只获取所有p里的内容以及最后一个span里的内容(其中获取P的内容有一个条件,那就是只有前面有一个A标签的P的内容才会被获取),span或许有或许没有,如果有就获取,如果没有就不获取求:
C#的正则表达式
using System.Text.RegularExpressions;
代码
Match mm = Regex.Match(html, @"<table[^>]*>(((<table[^>]*>(?<o>)|</table>(?<-o>)|(?!</?table)[\s\S])*)(?(o)(?!)))\b" + "会员输赢资料" + @"\b(?:(?!<table[^>]*>)[\s\S])*?(((<table[^>]*>(?<o>)|</table>(?<-o>)|(?!</?table)[\s\S])*)(?(o)(?!)))</table>", RegexOptions.IgnoreCase);
if (mm.Success)
{
//MessageBox.Show(mm.Value);
//MatchCollection mdd = GetMidValue("<td", "</td>", mm.Value);
//foreach (Match m in mdd)
//{
// for (int i = 1; i < m.Groups.Count; i++)
// {
// restult += m.Groups[i].Value;//就是你要的结果
// }
//}
MatchCollection mc = Regex.Matches(mm.Value, @"<td[^>]*>\s*(?<content>[\s\S]*?)\s*</td>", RegexOptions.IgnoreCase);
foreach(Match m in mc)
{
for (int i = 1; i < m.Groups.Count; i++)
{
restult += m.Groups[i].Value + "\n";
}
}
MessageBox.Show(restult);
}
相关文章推荐
- 获取网页中匹配代码的正则 (获得字符串中开始和结束字符串中间得值)
- c#用正则表达式获得指定开始和结束字符串中间的一段文本
- c# 用正则表达式获取开始和结束字符串中间的值
- c# 用正则表达式获取开始和结束字符串中间的值
- 黄聪:C#用正则表达式获得指定开始和结束字符串中间的一段文本
- 获得字符串中开始和结束字符串中间得值
- .Net 获得字符串中开始和结束字符串中间得值
- 获得字符串中开始和结束字符串中间得值
- PHP正则表达式 获取开始字符串和结束字符串中的部分内容
- C# :从一段字符串中,输入开始和结束的字符,取中间的字符?
- c#正则表达式匹配字符串,获取组的值
- c# 获取网页中指定的字符串信息的实例代码
- C# 下面的代码示例演示如何结束异步操作以获取请求的流,然后开始一个请求以获取响应。....
- php正则表达式 获取开始字符串和结束字符串中的部分内容
- JAVA之旅(三十四)——自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫
- 替换文中所有以特定字符串开始特定字符串结束的代码实现
- 在C#中使用正则表达式自动匹配并获取所需要的数据
- C#正则表达式匹配字符串
- 21.2.5 获取与正则表达式进行匹配检测的字符串
- 正则匹配以某字符串开始的整行