yiruirui 发表于 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!

水木子 发表于 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)

lpxx 发表于 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))

yiruirui 发表于 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!

shano 发表于 2010-10-31 00:29:03

很简单   LZ是一点也不看帮助纯粹拿来主义呀
看你给的例子 应该是直接抓取网页吧
$sText =_IEBodyReadHTML($oIE);这样就可以把网页的源码赋值给$sText了
$aReg = StringRegExp($sText, '(13\d{9})\D', 3) ;这句不够严谨得改一下简单说一下 正则匹配字符串里13开头然后连续9个数字但是手机号码有159开头的所以 改成1开头连续匹配10次数字更严谨


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

kisyan 发表于 2010-10-31 12:21:51

看过学习正则
不过在论坛里看的那个关于IP 地址的正则到现在还是不懂   水木子老大可以帮助解释下吗?

左手猫头鹰 发表于 2010-10-31 12:27:49

\d重复多少次,只能匹配连续数字吧,万一有人用“-”或者其他的隔开了,那就玩不转了

LZ把可能的电话号码书写情况都说一下吧

nmgwddj 发表于 2010-10-31 17:18:19

我知道手机号都是1开头的。。

masterpcc 发表于 2010-10-31 19:31:37

学习中!!顶一个!!

yiruirui 发表于 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) ;

kood481748 发表于 2010-10-31 22:37:26

按照5楼的说法,你这们改应该是对了,不过我对正则一窃不通
页: [1]
查看完整版本: 求一正则表达式用来提取电话号码。(已经解决.)