找回密码
 加入
搜索
查看: 4747|回复: 10

[AU3基础] 求一正则表达式用来提取电话号码。(已经解决.)

  [复制链接]
发表于 2010-10-29 21:13:06 | 显示全部楼层 |阅读模式
本帖最后由 yiruirui 于 2010-11-1 10:36 编辑

<ul><li id="law06">13341686683</li><li id="law07"><a href="/usersite/home/liu345213/workroom.asp"

上面是一个文本文件中的一句话,里面有好多这样的话,我现在想输出中间的电话号码
认为应该是用正则表达式吧,请大虾们给指点一下,如何只输出13341686683这个,其他都过滤掉。先说3Q!

评分

参与人数 1金钱 +10 收起 理由
hzxymkb + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-10-29 21:32:31 | 显示全部楼层
本帖最后由 水木子 于 2010-10-29 21:54 编辑

#include <Array.au3>
$sText = '<ul><li id="law06">13341686683</li><li id="law07">134567888888<a href="/usersite/home/liu345213/workroom.asp"'

$aReg = StringRegExp($sText, '(13\d{9})\D', 3)
_ArrayDisplay($aReg)
发表于 2010-10-29 23:52:43 | 显示全部楼层
本帖最后由 lpxx 于 2010-10-29 23:53 编辑

你这个还是比较好提取的,不过真正手机号码提取还有需要很多合理性的判断,最简单的就是:
#include <Array.au3>
$Str = '<ul><li id="law06">13341686683</li><li id="law07"><a href="/usersite/home/liu345213/workroom.asp"'
$sR = StringRegExp($str, '\d{11}', 3)
_ArrayDisplay($sR, UBound($sR))
 楼主| 发表于 2010-10-30 23:58:31 | 显示全部楼层
回复 2# 水木子


    首先感谢楼上两位,是这样的,从一个文本文件中来单独列出手机号码,也就是说每次的
电话号码都不一样,
$sText = '<ul><li id="law06">13341686683</li><li id="law07">134567888888<a href="/usersite/home/liu345213/workroom.asp"'
$aReg = StringRegExp($sText, '(13\d{9})\D', 3)
这样是可以,但是限制了只能从这句话中读取出来,别的语句的电话号码又不相同,不至于每次都把包含电话号码的句子都找出来吧,有好多电话号码该则么办呢?也就是说能不能对这个文本文件用正则直接提取出来其中的电话号码呢?而不是单独针对某一个句子?3Q!
发表于 2010-10-31 00:29:03 | 显示全部楼层
很简单   LZ是一点也不看帮助  纯粹拿来主义呀
看你给的例子 应该是直接抓取网页吧
$sText =_IEBodyReadHTML($oIE)  ;这样就可以把网页的源码赋值给$sText了
$aReg = StringRegExp($sText, '(13\d{9})\D', 3) ;这句不够严谨  得改一下  简单说一下 正则匹配字符串里13开头然后连续9个数字  但是手机号码有159开头的  所以 改成1开头连续匹配10次数字更严谨


已经说的很详细了  具体用到的函数自己看帮助吧

评分

参与人数 1金钱 +20 收起 理由
水木子 + 20 多谢指正,学习啦!

查看全部评分

发表于 2010-10-31 12:21:51 | 显示全部楼层
看过  学习  正则
不过在论坛里看的那个关于IP 地址的正则到现在还是不懂   水木子  老大可以帮助解释下吗?
发表于 2010-10-31 12:27:49 | 显示全部楼层
\d重复多少次,只能匹配连续数字吧,万一有人用“-”或者其他的隔开了,那就玩不转了

LZ把可能的电话号码书写情况都说一下吧
发表于 2010-10-31 17:18:19 | 显示全部楼层
我知道手机号都是1开头的。。
发表于 2010-10-31 19:31:37 | 显示全部楼层
学习中!!顶一个!!
 楼主| 发表于 2010-10-31 21:34:55 | 显示全部楼层
回复 5# shano


    $aReg = StringRegExp($sText, '(13\d{9})\D', 3) ;
电话号码有189开头的等等,我这样改下,你看对不?
$aReg = StringRegExp($sText, '(1\d{10})\D', 3) ;
发表于 2010-10-31 22:37:26 | 显示全部楼层
按照5楼的说法,你这们改应该是对了,不过我对正则一窃不通
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-3 02:14 , Processed in 0.075748 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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