1. 定义
    高级文本匹配模式,提供了搜索、替代等功能。本质是由一系列特殊符号和字符组成的子串,这个子串即是正则表达式。这个表达式描述了字符和字符重复行为,可以匹配一类特征的字符串。

  2. 特点
    正则表达式特点:

    • 方便进行检索和修改
    • 支持语言众多
    • 灵活多用
    • Mongo正则类型,Django等框架作为URL匹配,爬虫
  3. 用于匹配的函数

re.findall(pattern, string)

功能:使用正则表达式匹配字符串
参数: pattern 正则表达式 string 目标字符串
返回值:一个列表 匹配到的所有内容

  1. 元字符(即正则表达式中有特殊含义的符号)
    1. 普通字符 
        元字符 : abc 
        匹配规则 :匹配相应的普通字符
    
    2. 或 
        元字符 : ab|cd 
        匹配规则 : 匹配竖线两边任意一个正则表达式符合的情况 
        PS: 竖线|两侧不要没用的空格
    
    3. 匹配单一字符 
        元字符 : . 
        匹配规则 : 匹配除了换行之外的任意字符
    
    4. 匹配开始位置 
       元字符: ^(上箭头) 
       匹配规则: 匹配一个字符串的开始位置 
       例: re.findall("^hello", "hello world")  --->  ['hello']
            re.findall("^hello", "tom, hello")   --->  []
             
    5. 匹配结束位置 
       元字符: $ 
       匹配规则: 匹配目标字符串的结束位置
    
    6. 匹配重复 
       元字符: * 
       匹配规则: 匹配前面的正则表达式重复0次或多次(>=0) 
       例: ab*   a 重复0次   ab 重复1次  abb 重复2......
    
    7. 匹配重复 
       元字符: + 
       匹配规则: 匹配前面的正则表达式重复1次或多次(>=1)
    
    8. 匹配重复 
       元字符: ? 
       匹配规则: 匹配签的正则表达式重复0次或1(0,1)
    
    9. 匹配重复 
       元字符: {n} 
       匹配规则: 匹配指定的重复次数 
       例: ab{3} ---> abbb
    
    10. 匹配重复 
        元字符: {m,n} 
        匹配规则: 匹配前面的正则表达式重复m次到n次 
        例: ab{3,5} --->  abbb  abbbb  abbbbb
    
    11. 匹配字符集合 
        元字符: [] 
        匹配规则: 匹配括号范围内的任意一个字符 
        例: [a-z]  [A-Z]  [1-9]....
    
    12. 匹配字符集合 
        元字符: [^...] 
        匹配规则: 匹配除指定字符集之外的任意字符
    
    13. 匹配任意()数字字符 
        元字符:\d     \D 
        匹配规则: \d 匹配任意数字字符([0-9])  
                  \D 匹配任意非数字字符([^0-9])
    
    14. 匹配(非)普通字符 (普通字符:数学字母下划线) 
        元字符: \w     \W 
        匹配字符: \w 匹配任意一个普通字符([_0-9a-zA-Z])
                  \W 匹配任意非普通字符([^_0-9a-zA-Z]15. 匹配()空字符 
        元字符: \s    \S 
        匹配规则: \s 匹配任意空字符  \S 匹配任意非空字符
                  [\n\t\r\0]          
    
    16. 匹配起止位置 
        元字符: \A   \Z 
        匹配规则: \A匹配开始位置(^)   \Z匹配结束位置($)
        绝对匹配: \Aabc\Z ——> 只能匹配abc(且被匹配的字符串也必须是abc)
    
    17. 匹配单词边界位置 
        元字符: \b   \B 
        匹配规则: \b 匹配单词的边界  \B 匹配非单词的边界 
        单词边界: 数字字母下划线和其他字符的交界位置为单词的边界