近日做一个项目,需要获取网页所有js代码,使用语言是asp。一开始想到的是通过寻找字符串<script作为开始位置,</script>字符串作为结束位置的方法,一张网页只有一段js代码还好做,但是网页有多少段js代码是个未知数,因此使用寻找字符串的方法会比较困难。 后来想到正则表达式,但是我对正则表达式并不是很精通,虽然以前也写过一些正则代码。不过,我认为通过正则表达式匹配,揪出符合规则的字符串,效率是最高的,并且实现代码应该也是最少的。于是,当机立断,就用正则表达式来获得网页所有js代码。 由于对正则表达式并不陌生,找了一个类似的例子参考后,很快便完成了程序,调试调试,终于成功。下面附上代码。 asp正则表达式获得网页所有js代码 <% Dim str
'假设str为网页html代码 str = "<html><head><script type='text/javascript'>function(){var a = 1;}</script></head><body>hello world!</body><script>function(){var b = 2;}</script></html>"
Dim re, match, matchs
'定义正则方法Re set re = new RegExp
'设置不用区分大小写 re.IgnoreCase =True
'设置全局匹配(如果设为false,则只找出第一个匹配的项) re.Global = True
'正则表达式,这个最为关键,需要了解各转义符的词义 re.Pattern = "<script[^>]*?>([\s\S]*?)</script>"
'执行正则 Set matchs = re.Execute(str)
'列举所有匹配项 for each match in matchs
'把每一个匹配项写下来,也可以保存到一个变量里,供后面使用 response.write match.SubMatches(0) & "<br><br>---------<br><br>"
next
'结束执行 set matchs = nothing %> 执行结果: function(){var a = 1;}
---------
function(){var b = 2;}
---------
正则表达式各个转义符的词义是通用的,即每个转义符在各种编程语言里的含义都是一样的,这给跨语言编程带来很大的便利,不用去重新研究新的匹配规则。
|