出没于网
  Goldtimes.net 互联网重回黄金时代!
国内唯一诚信、实用、合法的网络赚钱指南网站
日志首页  | 互联网 | 技术新知 | Goldtimes | Linux | .NET | JavaScript | AJAX | ASP | MSSql | PHP | MySql | Flash | 收藏 | 站长手记
国内唯一诚信、实用、合法的网络赚钱指南网站
用户登陆
用户:
密码:
 

站点日历
73 2010 - 9 48
   1234
567891011
12131415161718
19202122232425
2627282930


站点统计

联系方式
手机:13686861114
QQ:993715476
Email:anyshop@126.com

最新评论(删除/引用)

日志搜索

 标题   内容

Alexa网站数据提交系统源程序 海南有多少web2.0站点?
未知 正则表达式在ALEXA网站排名中的应用实例   [ 日期:2006-04-13 ]   [ 来自:本站原创 ]

ALEXA网站排名为1347的记录在数据库或网页中显示的XML文档,如:

<span>&nbsp;<Reach per>1</Reach per><tqy><lK6j>,
</lK6j></tqy><budf@opif.org>3
</budf@opif.org>4<Page Views rank:>
<Traffic Rank for><phzrm><Reach per>7</Reach per>
</phzrm></Traffic Rank for></Page Views rank:></span>

如何转化为正整数1347呢?这就需用到正则表达式,源程序如下:

<%
dim source
source="<span>&nbsp;<Reach per>1</Reach per><tqy><lK6j>,
</lK6j></tqy><budf@opif.org>3
</budf@opif.org>4<Page Views rank:>
<Traffic Rank for><phzrm><Reach per>7</Reach per>
</phzrm></Traffic Rank for></Page Views rank:></span>"

Dim regEx, Match, Matches, temp ' 创建变量。
Set regEx = New RegExp ' 创建正则表达式。
regEx.Pattern = ">\d+<" ' 设置模式。
regEx.IgnoreCase = True ' 设置是否区分大小写。
regEx.Global = True ' 设置全程匹配。
Set Matches = regEx.Execute(source) ' 执行搜索。
For Each Match in Matches' 循环遍历Matches集合。
'Response.Write Match.Value & vbCRLF
temp = Match.Value
temp = replace(temp,">","")
temp = replace(temp,"<","")
Response.Write temp
Next
%>
<br>
<%=temp%>


再举一例:

ALEXA网站排名为13547的记录在数据库或网页中显示的可能是:

<span>&nbsp;<Reach per>1</Reach per><tqy><lK6j>,
</lK6j></tqy><budf@opif.org>3
</budf@opif.org>54<Page Views rank:>
<Traffic Rank for><phzrm><Reach per>7</Reach per>
</phzrm></Traffic Rank for></Page Views rank:></span>

<span>&nbsp;<Reach per>1</Reach per><tqy><lK6j>,
</lK6j></tqy><budf@opif.org>3
</budf@opif.org>5,4<Page Views rank:>
<Traffic Rank for><phzrm><Reach per>7</Reach per>
</phzrm></Traffic Rank for></Page Views rank:></span>

如果还是运用上面的表达式是不能输出正确的数据的,改进后的程序:

<%
Dim regEx, Match, Matches, temp ' 创建变量。
Set regEx = New RegExp ' 创建正则表达式。
regEx.Pattern = ">\d+" ' 设置模式。
regEx.Pattern = "\d+<" ' 设置模式。

//BLOG BUG  :这里有个反斜杆

regEx.IgnoreCase = True ' 设置是否区分大小写。
regEx.Global = True ' 设置全程匹配。
Set Matches = regEx.Execute(source) ' 执行搜索。
For Each Match in Matches' 循环遍历Matches集合。
'Response.Write Match.Value & vbCRLF
temp = Match.Value
temp = replace(temp,">","")
temp = replace(temp,"<","")
Response.Write temp
Next
%>
<br>
<%=temp%>

Alexa网站数据转换
相关链接:
Alexa网站数据提交系统源程序:http://www.goldtimes.net/blogview.asp?logID=19

完整的源码如下:


<%
Option Explicit
Session.CodePage=936
%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>AlexaAlexa网站数据转换</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<style type="text/css">
<!--
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
-->
</style></head>
<body>

 

<!--#include file="conn.asp"-->

<%

dim rs
dim sql
set rs=server.createobject("adodb.recordset")
sql="select * from productlist where id ="&Request.QueryString("id")&""
rs.open sql,conn,1,3

%>

<%
dim source
source=rs("key")

Dim regEx, Match, Matches, temp ' 创建变量。
Set regEx = New RegExp ' 创建正则表达式。
regEx.Pattern = ">\d+" ' 设置模式。
regEx.Pattern = "\d+<" ' 设置模式。
regEx.IgnoreCase = True ' 设置是否区分大小写。
regEx.Global = True ' 设置全程匹配。
Set Matches = regEx.Execute(source) ' 执行搜索。
For Each Match in Matches' 循环遍历Matches集合。
'Response.Write Match.Value & vbCRLF
temp = temp+Match.Value
Next
temp = replace(temp,">","")
temp = replace(temp,"<","")


rs("hits")= temp

rs("webtime")= now()

 

rs.update
rs.close
set rs=nothing
response.Write "<script language=javascript>alert('ok!');history.go(-2);</script>"
response.End

%>
</body>
</html>

相关知识:
正则表达式的三个对象和集合

1、RegExp对象是最重要的一个对象,它有几个属性,其中:
  ○Global 属性,设置或返回一个 Boolean 值,该值指明在整个搜索字符串时模式是全部匹配还是只匹配第一个。如果搜索应用于整个字符串,Global 属性的值为 True,否则其值为 False。默认的设置为 False。
  ○IgnoreCase 属性,设置或返回一个Boolean值,指明模式搜索是否区分大小写。如果搜索是区分大小写的,则 IgnoreCase 属性为 False;否则为 True。缺省值为 False。
  ○Pattern 属性,设置或返回被搜索的正则表达式模式。必选项。总是一个 RegExp 对象变量。
  2、Match 对象
  匹配搜索的结果是存放在Match对象中,提供了对正则表达式匹配的只读属性的访问。 Match 对象只能通过 RegExp 对象的 Execute 方法来创建,该方法实际上返回了 Match 对象的集合。所有的 Match 对象属性都是只读的。在执行正则表达式时,可能产生零个或多个 Match 对象。每个 Match 对象提供了被正则表达式搜索找到的字符串的访问、字符串的长度,以及找到匹配的索引位置等。
  ○FirstIndex 属性,返回在搜索字符串中匹配的位置。FirstIndex 属性使用从零起算的偏移量,该偏移量是相对于搜索字符串的起始位置而言的。换言之,字符串中的第一个字符被标识为字符 0
  ○Length 属性,返回在字符串搜索中找到的匹配的长度。
  ○Value 属性,返回在一个搜索字符串中找到的匹配的值或文本。
  3、Matches 集合
  正则表达式 Match 对象的集合。Matches 集合中包含若干独立的 Match 对象,只能使用 RegExp 对象的 Execute 方法来创建之。与独立的 Match 对象属性相同,Matches `集合的一个属性是只读的。在执行正则表达式时,可能产生零个或多个 Match 对象。每个 Match 对象都提供了与正则表达式匹配的字符串的访问入口、字符串的长度,以及标识匹配位置的索引。
  学习了这三个对象和集合,如何应用于字符串的判断和替换呢?regExp对象的三个方法正好解决了这个问题,它们是Replace方法、Test方法和Execute方法。
  1、Replace 方法
  替换在正则表达式查找中找到的文本。我们还是先看个例子:下面的例子说明了 Replace 方法的用法。
<%
Function ReplaceTest(patrn, replStr)
Dim regEx, str1 ' 建立变量。
str1 = "The quick brown fox jumped over the lazy dog."
Set regEx = New RegExp ' 建立正则表达式。
regEx.Pattern = patrn ' 设置模式。
regEx.IgnoreCase = True ' 设置是否区分大小写。
ReplaceTest = regEx.Replace(str1, replStr) ' 作替换。
End Function
Response.write ReplaceTest("fox", "cat") & "<BR>" ' 将 'fox' 替换为 'cat'。
Response.write ReplaceTest("(S+)(s+)(S+)", "$3$2$1") ' 交换词对.
%>
  2、Test 方法
  对指定的字符串执行一个正则表达式搜索,并返回一个 Boolean 值指示是否找到匹配的模式。正则表达式搜索的实际模式是通过RegExp对象的Pattern属性来设置的。RegExp.Global属性对Test方法没有影响。
  如果找到了匹配的模式,Test方法返回True;否则返回False。下面的代码说明了Test 方法的用法。
<%
Function RegExpTest(patrn, strng)
Dim regEx, retVal ' 建立变量。
Set regEx = New RegExp ' 建立正则表达式。
regEx.Pattern = patrn ' 设置模式。
regEx.IgnoreCase = False ' 设置是否区分大小写。
retVal = regEx.Test(strng) ' 执行搜索测试。
If retVal Then
RegExpTest = "找到一个或多个匹配。"
Else
RegExpTest = "未找到匹配。"
End If
End Function
Response.write RegExpTest("is.", "IS1 is2 IS3 is4")
%>
  3、Execute 方法
  对指定的字符串执行正则表达式搜索。正则表达式搜索的设计模式是通过 RegExp 对象的 Pattern 来设置的。
  Execute 方法返回一个 Matches 集合,其中包含了在 string 中找到的每一个匹配的 Match 对象。如果未找到匹配,Execute 将返回空的 Matches 集合。

 

 



[本日志由 admin 于 2008-09-26 编辑]
引用通告地址 (0):
复制引用地址http://blog.goldtimes.net/trackback.asp?tbID=20
复制引用地址http://blog.goldtimes.net/trackback.asp?tbID=20&CP=GBK
Powered by Goldtimes.net © 2005-04 , Processed in 0.046875 second(s) , 7 queries