如何用正则获取这个网址[已解决]
本帖最后由 骗子 于 2011-2-27 15:19 编辑其实就是用了《水木子》给的代码,问题虽然解决了,但是还是有点疑问,在9楼,有知道的麻烦告诉我下
源代码:
</div>
<iframe id="ifm0" frameborder="0" width="810" scrolling="no" height="810" style="top: 0px; left:0px;" src="xxxxxx"></iframe>
</div>
想获取上面xxxxx的部分,因为中间的东西那部分是变化的一个网址,很长,我简化成XXXXX,
我的想法是用正则获取这个地址然后在浏览器中打开
补充一下,这个网页有多个 src="xxxxxx",但是只有一个<iframe id="ifm0" frameborder="0" width="810" scrolling="no" height="810" style="top: 0px; left:0px;" src="xxxxxx"></iframe>只有一个,我按照楼下的三个大侠的正则只能确认到第一个src="xxxxxx",但这个不是我想要的
我根据几位热心的兄弟给的提示在 au3.REHelper中自己修改了一下,可以找到1条记录,也就是我想要的,如下图
但是我在脚本$aRe = StringRegExp($sHTML, '(?i)(?<=left:0px;" src=")[^"]+', 3)
MsgBox (0,"",$aRe)
MsgBox (0,"",$aRe)
_ArrayDisplay($aRe, 'Default Search')执行后报错MsgBox (0,"",$aRe)出现1说明应该找到了,但是MsgBox (0,"",$aRe)就报错了
F:\autoit3\2012\aaaa.au3 (16) : ==> ???????????.:
MsgBox (0,"",$aRe)
MsgBox (0,"",$aRe^ ERROR
这个是怎么回事
_StringBetween
自带的函数,很方便,换行可以用@crlf代替 $sText = '</div>' & @CRLF & _
'<iframe id="ifm0" frameborder="0" width="810" scrolling="no" height="810" style="top: 0px; left:0px;" src="www.autoitx.com"></iframe>' & @CRLF & _
"</div>'"
$aRe = StringRegExp($sText, '(?i)(?<=src=")[^"]+', 3)
ShellExecute($aRe) src="(.*?)" (?i)(?<=left:0px;"\hsrc=")[^"]+ 不懂正则,帮你顶上,顺便学习学习 我也来一个
(?<=src=").+(?="><)
呵呵最近很喜欢正则 表达式 = (?s).+?left:0px;" src="(.*?)".+
替换 = $1 本帖最后由 骗子 于 2011-2-27 15:14 编辑
解决方案:#include <Array.au3>
$sText = '</div>' & @CRLF & _
'<iframe id="ifm0" frameborder="0" width="810" scrolling="no" height="810" style="top: 0px; left:0px;" src="http://apps.manyou.com/1061199"></iframe>' & @CRLF & _
"</div>'"
$aRe = StringRegExp($sText, '(?i)(?<=src=")[^"]+', 3)
_ArrayDisplay($aRe, "符合src=“xxxx”类型的内容")
MsgBox(0,"",$aRe)
疑问:#include <Array.au3>
$sText = '</div>' & @CRLF & _
'<iframe id="ifm0" frameborder="0" width="810" scrolling="no" height="810" style="top: 0px; left:0px;" src="http://apps.manyou.com/1061199"></iframe>' & @CRLF & _
"</div>'"
$aRe = StringRegExp($sText, '(?s).+?left:0px;" src="(.*?)".+', 3)
_ArrayDisplay($aRe, "符合src=“xxxx”类型的内容"),有效
但是当$sText = _IEBodyReadHTML ($oIE)就没有内容显示,用msgbox的话报错,就像一楼的#include <Array.au3>
$sText = _IEBodyReadHTML ($oIE) ;读取网页的源文件
$aRe = StringRegExp($sText, '(?s).+?left:0px;" src="(.*?)".+', 3)
_ArrayDisplay($aRe, "符合src=“xxxx”类型的内容") 难道问题出在读取网页源代码的内容有换行?但是又不应该啊,一楼的源代码是我直接复制出来的 问题究竟解决了吗?{:face (461):} #include <Array.au3>
$sText = '</div>' & @CRLF & _
'<iframe id="ifm0" frameborder="0" width="810" scrolling="no" height="810" style="top: 0px; left:0px;" src="http://apps.manyou.com/1061199"></iframe>' & @CRLF & _
"</div>'"
$aRe = StringRegExp($sText, '(?s).+?left:0px;" src="(.*?)".+', 3)
_ArrayDisplay($aRe, "符合src=“xxxx”类型的内容")能找到符合的内容,有显示
但是下面的就不行了,找不到符合的。问题是上面的内容就是我从网页源代码中摘出来的,应该都可以才对啊
#include <Array.au3>
#include <IE.au3>
$oIE = _IECreate("http://www.iopq.com/userapp-app-id-1061199.html")
$sText = _IEBodyReadHTML ($oIE) ;读取网页的源文件
$aRe = StringRegExp($sText, '(?s).+?left:0px;" src="(.*?)".+', 3)
_ArrayDisplay($aRe, "符合src=“xxxx”类型的内容")
页:
[1]