从网上找到一个元宝 Bux.to挂机程序代码,他是使用c#在.net环境下实现的,很想看看使用别的语言也给实现下,网页cookie和session什么的原来写过文章实现过了.比较简单.看看他的网页链接提取部分使用的是.net提供的正则表达式.Regex,Qt里面也提供了个正则表达式的实现QRegex.
微软的这个正则表达式多了个功能,就是把提取的内容保存到一个数组中
private void GetAdLink(string HTMStr)
{
Regex r;
Match m;
AdUrl = new ArrayList();
r = new Regex(@"href=(?.*)target=_blank>", RegexOptions.IgnoreCase | RegexOptions.Compiled);
string tmp = "";
for (m = r.Match(HTMStr); m.Success; m = m.NextMatch())
{
tmp = m.Result("${AdPage}").Trim(); //地址
if (AdUrl.IndexOf(tmp) < 0)
AdUrl.Add(tmp);
// MessageBox.Show(tmp);
}
}
|
?
对应的就是数组,但这个Qt里面是不支持的,Qt相应的实现如下:
QRegExp rx("href=([^<]* ?) target=_blank>");
rx.setCaseSensitivity(Qt::CaseInsensitive);
rx.setMinimal(true);
//否则就会查找到第一条,然后和最后一条的target=_blank>作为返回值
int pos = rx.indexIn(str);
while ((pos = rx.indexIn(str, pos)) != -1) {//str对应读取的页面数据
++count;
pos += rx.matchedLength(); //继续寻找下一个匹配
}
|
关于正则表达式,我觉得这个文章不错,比较通用
提取链接包括链接文字可使用如下的表达式
href=([^<]* ?) (target=_blank|target="_blank")>([^<]* ?)</a>
|
发觉正则表达式是个好东西,譬如我们分析国家标准gis数据交换格式时,就可以使用这个来方便的读取制定的数据。
使用以下正则表达式可读取版本号
Version:(.*\s+)
|
匹配mapgis的宗地文件的正则表达式 原理:以#开头,以#结尾,取#之前的记录,不取空白记录
(#([^<]*?)(?=#\S))
|
阅读(3926) | 评论(0) | 转发(0) |