正则笔记

常用量词转义:

  • * -> {0,}
  • + -> {1,}
  • ? -> {0,1}
  • ?P<name> 分组名
  • ?: 不记名分组
  • | 或者方法
  • ?= 条件为预搜索
  • +? 非贪婪模式
  • + 贪婪模式
  • \A等于默认模式 ^
  • \Z 等于默认模式的 $
  • <num> 反向引用

^属性:

  • 它只有紧跟着[的时候才是一个元字符,否则就需要转义

分组grouping:

  • 如果用量词限定出现次数的元素不是字符或者字符组,而是几个字符甚至表达式,就应该用括号将它们分为一组。
  • 捕获
    • (exp) 匹配exp,并捕获文本到自动命名的组里
    • (?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?name'exp)
    • (?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号
  • 零宽断言
    • (?=exp) 匹配exp前面的位置
    • (?<=exp) 匹配exp后面的位置
    • (?!exp) 匹配后面跟的不是exp的位置
    • (?<=exp) 匹配exp后面的位置
    • (?!exp) 匹配后面跟的不是exp的位置
    • (?<!exp) 匹配前面不是exp的位置
  • 注释
    • (?#commond)用于提供注释让人阅读

有穷自动机:

  • Finite Automata 有穷自动机
  • finite-state machine 有穷状态自动机
  • 条件:
    • 具有有限多个状态
    • 有一套状态转移函数(或者叫“规则”)
    • 有一个开始状态
    • 有一个或者多个最终状态

DFA:Definite Finite Automata 确定型有穷自动机
NFA:Non-Definite Finite Automata 非确定型有穷自动机

正则表达式拒绝服务攻击(Regular Expreesion Denial of Service)

?=, ?! 环视功能
捕获型括号()
忽略优先量词+?, *?, ??...

解决常见问题是思路:
元素的逻辑:

  • 必须出现
  • 可能出现
  • 不能出现

常见操作:

  • 匹配、替换、切分
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容