RegExp(二)

作者: 冰菓_ | 来源:发表于2022-05-08 22:04 被阅读0次

    断言

    单词边界(Word Boundary)

    我们就可以在正则中使用\b 来表示单词的边界。 \b 中的 b 可以理解为是边界(Boundary)这个单词的首字母

    
    >>> import re
    >>> test_str = "tom asked me if I would go fishing with him tomorrow."
    >>> re.sub(r'\btom\b', 'jerry', test_str)
    'jerry asked me if I would go fishing with him tomorrow.'
    
    行的开始或结束
    1. 日志起始行判断
    2. 输入数据校验
    环视( Look Around)
    规则 示例一
    the little cat cat2 is in the hat hat2, we like it
    
    \b(\w+)\s\1\b
    

    转义

    转义字符
    字符串转义和正则转义
    
    >>> import re
    >>> re.findall(r'\\', 'a*b+c?\\d123d\\')
    ['\\', '\\']
    
    
    正则中元字符的转义
    括号的转义
    字符组中的转义

    https://stackoverflow.com/questions/6967204/how-is-n-and-n-interpreted-by-the-expanded-regular-expression/59192811#59192811

    正则有哪些常见的流派及其特性

    正则如何处理 Unicode 编码的文本

    如何在编辑器中使用正则完成工作

    如何理解正则的匹配原理以及优化原则

    有穷状态自动机

    有穷状态是指一个系统具有有穷个状态,不同的状态代表不同的意义。自动机是指系统可以根据相应的条件,在不同的状态下进行转移。从一个初始状态,根据对应的操作(比如录入的字符集)执行状态转移,最终达到终止状态(可能有一到多个终止状态)。有穷自动机的具体实现称为正则引擎,主要有 DFA 和 NFA 两种,其中 NFA 又分为传统的 NFA 和 POSIX NFA。

    DFA:确定性有穷自动机(Deterministic finite automaton)
    NFA:非确定性有穷自动机(Non-deterministic finite automaton)
    
    正则的匹配过程
    POSIX NFA 与 传统 NFA 区别
    回溯

    正则常见问题及解决方案

    匹配数字
    1. 数字在正则中可以使用 \d 或 [0-9] 来表示。
    2. 如果是连续的多个数字,可以使用 \d+ 或 [0-9]+。
    3. 如果 n 位数据,可以使用 \d{n}。
    4. 如果是至少 n 位数据,可以使用 \d{n,}。
    5. 如果是 m-n 位数字,可以使用 \d{m,n}。
    小数
    \d+(?:\.\d+)?
    
    浮点数

    负数浮点数表示:

    -\d+(?:\.\d+)?。
    

    正数浮点数表示:

    \+?(?:\d+(?:\.\d+)?|\.\d+)
    
    十六进制数
    [0-9A-Fa-f]+
    
    手机号码

    最新手机号段归属地数据库 (2022年5月版)

    身份证号码
    [1-9]\d{14}(\d\d[0-9Xx])?
    
    邮政编码
    (?<!\d)\d{6}(?!\d)
    

    IPv4 地址

    \d{1,3}(\.\d{1,3}){3}
    
    日期和时间
    \d{4}-\d{2}-\d{2}
    
    \d{4}-(?:1[0-2]|0?[1-9])-(?:[12]\d|3[01]|0?[1-9])
    
    (?:2[0-3]|1\d|0?\d):(?:[1-5]\d|0?\d)
    
    邮箱
    网页标签

    收集一下常见的正则

    相关文章

      网友评论

        本文标题:RegExp(二)

        本文链接:https://www.haomeiwen.com/subject/bxqxurtx.html