找回密码
 加入
搜索
查看: 2869|回复: 5

[IE类操作] 数据采集,求一正则的写法!

[复制链接]
发表于 2011-4-16 20:11:06 | 显示全部楼层 |阅读模式
求一正则的写法!
小弟在学习,自己在做一个邮箱数据采集
下面这个正则 能采集到 COM的邮箱,
但是我想连同 CN 的一起采集,我想一次写在一行代码里,应该怎么写!


$array = StringRegExp($sText, '\w+@\w+\.com' , 3)
 楼主| 发表于 2011-4-16 20:15:36 | 显示全部楼层
在等等论坛高手吧,牛奶会有的,蛋糕也会有的!
发表于 2011-4-16 20:37:09 | 显示全部楼层
回复 1# qq123123

试试这个可以不?
\w+@\w+\.cn|\w+@\w+\.com
发表于 2011-4-16 20:47:57 | 显示全部楼层
本帖最后由 easefull 于 2011-4-16 21:58 编辑

做题
#include <Array.au3>
Local $sText    = 'killer@126.com134564d8fd1f' & @CRLF &'34rdfar79df75644 killer@126.com.cn16974641' & @CRLF &'34rdfar79df75644 killer2@126.com.cn16974641'
Local $sRegExp  = '(\w+?@\w+?\.com.cn)|(\w+?@\w+?\.com)'
Local $asResult = StringRegExp($sText, $sRegExp, 3)
_ArrayDisplay($asResult)
Exit
自改答案:
'(\w+?@\w+?\.com.cn)|(\w+?@\w+?\.com)'
红色部分冗余,'\w+?@\w?\.'重复,应该可以精减,详见后面跟贴的代码.

'(\w+?@\w+?\.com.cn)|(\w+?@\w+?\.com)'
红色部分冗余, \w+?@ 和\w+@匹配是一样的

执行结果异常.执行结果会出现异常——每匹配.com的信箱前,都多匹配出一个空字符.
原因不明,解决方法是去掉支枝前后的捕获 '\w+?@\w+?\.com.cn|\w+?@\w+?\.com'.
注:此问题疑似BUG,详见http://www.autoitx.com/forum.php?mod=viewthread&tid=23813&extra=
 楼主| 发表于 2011-4-16 20:49:22 | 显示全部楼层
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

中国提供的这个,可以采集到,但是有错误!
发表于 2011-4-16 20:53:04 | 显示全部楼层
$sText="123@qq.com789@qq.cn555@qq.com"

$array = StringRegExp($sText, '\w+@\w+\.(?:com|cn)' , 3)
For $i=0 To UBound($array)-1
MsgBox(0,"",$array[$i])
Next

评分

参与人数 2金钱 +60 收起 理由
lixiaolong + 30 学习了!
水木子 + 30 “撞车了”

查看全部评分

您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-21 08:42 , Processed in 0.078679 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表