绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
关于python正则表达式场景收集(一)
2020-05-22 10:05:45

近在研究数据质量校验规则,这个规则要确保数据录入的有效性校验,这个靠单纯的SQL或数据库正则表达式难以实现,python正则表达式可以有效解决这个问题,目前还在持续整理中。

记录了一下,re.search和re.match的匹配位置不太一样,通过字典方式形成质量规则,后期再结合数据库数据进行匹配,把这个链路打通。

代码示例

  1. import re


  2. # match()函数只检测RE是不是在string的开始位置匹配,

  3. # search()会扫描整个string查找匹配;

  4. # match()只有在位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none

  5. re_complex_mobile=re.compile('^(13\d|14[5|7]|15\d|166|17[3|6|7]|18\d)\d{8}$')

  6. re_simple_mobile=re.compile('1[35678]\d{9}')

  7. phone='aa15808909000'

  8. res = re.search(re_simple_mobile, phone)

  9. # <re.Match object; span=(2, 13), match='15808909000'>

  10. res = re.match(re_simple_mobile, phone)

  11. res = re.search(re_complex_mobile, phone)

  12. res = re.match(re_complex_mobile, phone)

  13. # None


  14. mobile='15808909000'

  15. errormobile1='aa15808909000'

  16. errormobile2='158089090000'

  17. telephone='0222-12345678'

  18. email='1500000@139.aa.aa.com'

  19. erroremail='1500000@139.aa.aa.aa.com'

  20. date='2020-02-28'

  21. errordate1='2020-02-30'

  22. errordate2='2020-12-33'

  23. errordate3='3000-02-28'

  24. regex_dict = {'手机号复杂规则':'^(13\d|14[5|7]|15\d|166|17[3|6|7]|18\d)\d{8}$',

  25. '手机号简单规则': '^1[35678]\d{9}$',

  26. '电话号码规则':'^0(\d{2,3})-(\d{6,8})$',

  27. '电子邮件规则':'^([0-9a-zA-Z\_]{0,19})@(([0-9a-zA-Z]{1,13})\.){1,3}([com,cn,net]{1,3})$',

  28. '简单日期规则':'(\d{4}-\d{1,2}-\d{1,2})',

  29. '复杂日期规则':'(19[0-9]{2}|20[0-9]{2})-((0[469]|11)-([012][0-9]|30)|(0[13578]|1[02])-([012][0-9]|3[01])|(02-([01][0-9]|2[0-9])))'}

  30. res = re.search(regex_dict['复杂日期规则'], date)

  31. print(res)



分享好友

分享这个小栈给你的朋友们,一起进步吧。

追梦IT人
创建时间:2020-02-12 11:47:47
20年IT工作经验,曾在华为、HP、移动、电网等国内外知名IT企业任职;关注领域包括证券、航空、制造、电信、电网等。在数据库开发和优化、数据仓库、系统架构、大中型项目管理、部门管理、数据挖掘和分析、数据治理、大数据方面有一定研究。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • bq_wang
    栈主

小栈成员

查看更多
  • 栈栈
  • 小雨滴
  • 我没
  • 飘絮絮絮丶
戳我,来吐槽~