• 正则表达式与绕过案例


    一.常用的元字符

    匹配除换行符以外的任意字符

    详解和示例:

    (1). 匹配任何任意字符 例如 . 可以匹配 1,n,*,+,- ,等
    (2)\d\w\s 匹配第一个字符为数字,第二个字符为字母或数字、或下划线或汉字,第三字符为空格的字符串 例如:11 ,2a , 1_
    (3)^\d\d\d$ 匹配三个全部都为数字的字符串 例如: 123,456,789
    还可以用于验证输入的字符串是否符合qq(身份证号)的验证 :
    例如:^\d{8}$ 匹配8位数字的qq号,^\d{15}&匹配15位均为数字的身份证号
    (4)\bOlive\b 匹配单词Olive 例如: I Love Oliver and Olive .这个时候返回的是Olive 而不是Oliver,因为\b…\b返回的匹配的单词
    二、反义字符

    三、限定字符

    限定字符多用于重复匹配次数,常用的限定字符如下:

    详解和示例:

    四、转义字符

    在实际的开发中,可能会遇到要比配元字符的情况,这个时候就需要进行字符转义,如元字符 . * \ 需要转换为. * \;例如: 需要匹配qq邮箱 \d{8,}+qq+.+com 在这里的. 就需要加斜杠。

    五、字符分组

    捕获 (exp) 匹配exp,并捕获文本到自动命名的组里
    (?exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name’exp)
    (?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号
    零宽断言 (?=exp) 匹配exp前面的位置
    (?<=exp) 匹配exp后面的位置
    (?!exp) 匹配后面跟的不是exp的位置
    (? 注释 (?#comment) 这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读

    六、字符分枝

    字符分枝多用于满足不同情况的选择,用“|”将不同的条件分割开来,比如有些固定电话区号有三位,有些有四位,这个时候可以采用字符分支;例如:\d{3}-\d{8}|\d{4}-\d{8} 可以匹配两种不同长度区号的固定电话。

    七、懒惰匹配和贪婪匹配
    贪婪匹配:正则表达式中包含重复的限定符时,通常的行为是匹配尽可能多的字符。
    懒惰匹配,有时候需要匹配尽可能少的字符。
    回溯
    当前前面分支/重复匹配成功后,没有多余的文本可被正则后半部分匹配时,会产生回溯
    用一个简单的例子来解释一下贪婪匹配和惰性匹配!
    贪婪 : /\d+\b/
    惰性 : /d+?\b/
    文本 : 1234a
     

     

     

     

     

  • 相关阅读:
    解决mybatis case when 报错的问题
    怎么压缩图片?图片压缩技巧快学来
    Ascend C算子开发(入门)章节小测
    TCP是什么、UDP是什么,它们有什么区别
    macOS 关闭系统更新以及相关提示
    Dubbo
    Python 浮点数的舍入,round与decimal舍入方式
    Enzo丨Enzo 链霉亲和素阻滞剂/稀释剂方案
    学习-Java数组之foreach遍历数组之正负数数量统计
    Ionic list - ion-item的相关用法
  • 原文地址:https://blog.csdn.net/weixin_52812558/article/details/126226185