python 正则表达式初体验

回复 收藏
python正则表达式,主要是语法有点怪异,所以有点难懂,其实习惯了就好。在使用正则表达式之前,需要先插入re模块。

要求:匹配以10为开头的ip地址,如10.0.11.121   10.225.0.11  而 10.0.11.1211 就不匹配。
  1. >>> import re
  2. >>> pattern = re.compile(r'^10(\.\d{1,3}){2}\.\d{1,3}$')
  3. >>> st = ‘10.0.11.1211‘
  4. >>> m = pattern.match(st)
  5. >>> if m:
  6. ...      print 'match'
  7. ...
  8. >>> st = '10.0.11.121'
  9. >>> m = pattern.match(st)
  10. >>> if m:
  11. ...      print 'match'
  12. ...
  13. match
  14. >>> st = '10.225.0.11'
  15. >>> m = pattern.match(st)
  16. >>> if m:
  17. ...      print 'match'
  18. ...
  19. match
其中pattern = re.compile(r'^10(\.\d{1,3}){2}\.\d{1,3}$') 为核心匹配语句,其实严格上,这条匹配并不完美,像这样的ip它也会认为是匹配的 10.999.299.999  很显然这是不对的,但是使用字符串匹配的确有这样的缺陷,除非把ip地址分成四段,逐一去匹配并且判断值大小。相信这是一个不少工作量的事情。
2013-04-15 16:00 举报
已邀请:
0
在实际应用中需要写一个函数来检查。重复调用就可以了。或者直接取出对应的四个字符串,转换成数字,大于等于0,小于255。当然,第一个不能小于0.

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: