设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 10259|回复: 4
打印 上一主题 下一主题

正则表达式匹配美国邮政编号

[复制链接]

7

主题

0

好友

127

积分

注册会员

Rank: 2

跳转到指定楼层
楼主
发表于 2016-11-15 21:33:39 |只看该作者 |倒序浏览
使用:\d{5}-\d{4}|\d{5}
匹配123456-1234时,结果是:12345
但是,这样:\d{5}-\d{4})|\d{5}
结果却是:['']
请问这是什么情况?谢谢!
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

沙发
发表于 2016-11-16 15:13:55 |只看该作者
123456-1234 这个会优先匹配上 \d{5} 啊,因为第一位开始就可以成功了

不知道你想达到什么目的?
想要判断是否符合美国邮编规则,那你应该加上首尾的限定:
^\d{5}-\d{4}$|^\d{5}$

你给的这个式子本来就不是有效的美国邮编吧,前面有6位。所以理应不通过。
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

7

主题

0

好友

127

积分

注册会员

Rank: 2

板凳
发表于 2016-11-16 20:47:45 |只看该作者
crossin先生 发表于 2016-11-16 15:13
123456-1234 这个会优先匹配上 \d{5} 啊,因为第一位开始就可以成功了

不知道你想达到什么目的?

我想问的是使用这样:
(\d{5}-\d{4})|\d{5}
匹配:123456-1234时 当匹配到前面5个数时,第六个数不符合"-"这种情况,而满足后一种情况
应该匹配出12345,而结果匹配是[''] 不知道[]里面写上''表示什么,不明白
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

地板
发表于 2016-11-17 09:54:48 |只看该作者
Tony 发表于 2016-11-16 20:47
我想问的是使用这样:
(\d{5}-\d{4})|\d{5}
匹配:123456-1234时 当匹配到前面5个数时,第六个数不符合"- ...

这里加了括号就变成分组了,你查下python正则关于分组和group的使用。
''是空字符,这里匹配到了,但你匹配的那个规则没有定义分组
你改成
(\d{5}-\d{4})|(\d{5})
或者改用 search + group 的方法,就可以看到你要的后5个数字了
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

7

主题

0

好友

127

积分

注册会员

Rank: 2

5#
发表于 2016-11-17 22:00:19 |只看该作者
crossin先生 发表于 2016-11-17 09:54
这里加了括号就变成分组了,你查下python正则关于分组和group的使用。
''是空字符,这里匹配到了,但你匹 ...

哦,原来是这样,非常感谢!
回复

使用道具 举报

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

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-4-28 10:39 , Processed in 0.027992 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部