[已解决]正则:匹配邮编的问题?
本帖最后由 newuser 于 2010-12-17 10:21 编辑这是一个教程看到的:
匹配中国邮政编码:\d(?!\d)
怎么看不明白?
邮编是6位数,如果开始是1-9中任意数字匹配,后跟数字\d,那(?!\d)不就是前面的\d后不能在跟数字吗?没有指定6位数啊?改成:\d\d\d\d\d(?!\d)也不行啊?改成:^\d\d\d\d\d(?!\d)$还不行? \d{5} 本帖最后由 newuser 于 2010-12-17 08:37 编辑
回复 2# afan
匹配不精确,是我的问题没描述清楚,麻烦afan回答代码中的几个问题,呵呵!#cs
张三,黑龙江省 5-7771
李四,湖南省 0459-4399273
张五,河北省 010-4377965
赵六,北京230709198001011002
吕七,北京27070919800101123a
王八,日本23070919800102a 230709198001022
工人网,IP http://192.164.244.56
邮编: 166405
#ce
#include <array.au3>
Local $file=FileOpen(@ScriptDir&"\excises.txt")
Local $contents=FileRead($file)
Local $result=StringRegExp($contents,"+://[^\s]*",3)
; 匹配URL
; 通常URL的形式是ftp://xxx.xxx.xxx或http://xxx.xxx.xxx.xxx
; +能达到匹配ftp或http
; ://匹配://
; xxx.xx.xx部分在保证 [^\s] 排除空格的前提下* 能匹配
_ArrayDisplay($result)
Local $result=StringRegExp($contents,"\d{17}[\d|X]|\d{15}",3)
;匹配身份证
;身份证是15位纯数字或18位,前17位是纯数字,后1位是校验码,可能是数字或字母,那这里的X是一个未知数来匹配任意26个字母之一吗?
;18位的没匹配?
Local $result=StringRegExp($contents,"\d{17}[\d|]|\d{15}",3)
;看来我对 X的 理解不对?
_ArrayDisplay($result)
Local $result=StringRegExp($contents,"\d{4}-\d{7}|\d{3}-\d{8}",3)
;匹配电话
;电话是 0459-1234567或010-12345678
_ArrayDisplay($result)
Local $result=StringRegExp($contents,"\d{5}",3)
;匹配邮编不成功?我只要6位纯数字?可她连身份正或电话里的6位数字也提取了
_ArrayDisplay($result)
Local $result=StringRegExp($contents,"^\d{5}$",3)
;加 ^$也不行,根本没反应?
_ArrayDisplay($result)
FileClose($file)
回复 3# newuser
这个解决了,总把\b理解为单词边界,其实应该是字符串边界,呵呵!
Local $result=StringRegExp($contents,"\b\d{5}\b",3) [^\d](\d{5})$ 回复 5# lpxx
条条大路通罗马,谢谢.
页:
[1]