• 正则表达式入门与练习


    •  刚开始学习正则表达式,我认为正则表达式主要是利用正则的一些规则,来提取一段文字中的你想要获取的字段
    • 正则表达式有以下特殊字符,都是自己的理解:
    • 特殊字符 表示的意思 小例子
      ^ 以……开头 ”^b“:以b开头
      * 前面的字符出现次数大于等于0(出现任意次数) ”b*”:b出现任意次
      . 代表任意字符 “^b.*”:以b开头的任意字符串(b开头,后面出现任意字符次数不限制)
      & 以$符号前的结尾 “b$”:以b结尾
      非贪婪匹配 默认贪婪匹配是从右向左,非贪婪匹配是从左向右(符合阅读习惯)
      + 前面的字符出现次数大于等于1 相较于“*”至少要出现一次
      {2} 前面字符出现2次 “b{4}”:b出现四次(识别出bbbb)
      {2,} 前面字符出现至少2次 “b{4,}”:b出现至少四次(识别出bbbb,bbbbbbbbbbbbbbbbbbb等)
      {2,5} 前面字符出现可以是2,3,4,5次 “b{2,4}”:b出现2,3,4次(识别出bb、bbb、bbbb这三种)
      | 或关系,可以匹配多种 ”b|c|d“:可以是b,c,d中的一种
      [] 可以匹配[]中的任何一个

      “[2345]或者[0-9]"几种用法

      “1[48357][0-9]{9}”:提取手机号

      s 空白字符,空格,制表,换行,  
      S 非空格  
      w a~z,A~Z,0~9,_中的一个  
      W 除了w外的字符  
      [u4E00-u9FA5] 连续的汉字  
      d 数字 “d{4}”:出现四个数字,比如2001
    • 上面的是我记录的一些笔记,下面附上一个练习:
    • 目的:将一段文字中的日期提取出来,不同的日期格式都可以匹配。
      import re
      
      
      line = "xxx出生于2001年6月1日"
      line = "xxx出生于2001/6/1"
      line = "xxx出生于2001-6-1"
      line = "xxx出生于2001-06-01"
      line = "xxx出生于2001-06"
      
      regex_str = ".*出生于(d{4}[年/-]d{1,2}([月/-]d{1,2}|[月/-]$|&))"
      matchs = re.match(regex_str,line)
      print(matchs.group(1))

      不同的时间格式都可以匹配出来。

    •  
    •   
    •  
    •  
    •  以上。
  • 相关阅读:
    算法笔记_148:有向图欧拉回路求解(Java)
    算法笔记_147:有向图欧拉回路判断应用(Java)
    算法笔记_146:TarJan算法的应用(Java)
    算法笔记_145:拓扑排序的应用(Java)
    第十六章、例行性工作排程 (crontab)
    第十五章、磁碟配额(Quota)与进阶文件系统管理
    第十四章、Linux 账号管理与 ACL 权限配置
    第十三章、学习 Shell Scripts
    第十二章、正规表示法与文件格式化处理
    第十一章、认识与学习 BASH
  • 原文地址:https://www.cnblogs.com/longbigbeard/p/9542739.html
Copyright © 2020-2023  润新知