zoukankan      html  css  js  c++  java
  • 正则表达式学习

    前言

    官方定义:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

    参考文章:

    python的re模块及正则的讲解

    正则教程

    正则表达式手册

    在线测试网站

    Regexr

    站长之家

    规则

    纯字符数字

    直接输入字符数字进行匹配

    pattern 正则表达式规则
    /你好/
    str 要进行匹配的字符串
    你好,老师
    input 匹配结果
    你好
    

    元字符

    元字符 匹配项
    . 除换行符 之外的所有字符
    w 字母数字下划线
    d 数字
    s 空格
     单词的开头或结位,不占位置
    ^ 全文开头,不占位置
    $ 全文结尾,不占位置
    [abc] 括号内的字符
    a|b a或b

    反义元字符

    反义元字符 匹配项
    W 所有非字母数字下划线
    D 非数字
    S 非空白行
    B 非单词开头或结尾
    [^abc] 非括号内的字符

    量词

    量词 匹配项
    *(贪婪) 重复0或多次
    +(占有) 重复1或多次
    ?(懒惰) 重复0或1次
    {n} 重复n次
    {n,m} 重复n至m次
    {n,} 重复n至多次

    捕获组

    一个括号内的内容,可以对捕获组进行分组,并在后面可以进行引用

    捕获组 匹配项
    (exp) exp,并且捕获文本到自动命名的组里
    (?<name>exp) exp,并且捕获文本到命名的组里
    (?:exp) exp,不对捕获文本分配组号
    (?=exp) exp前项
    (?<=exp) exp后项
    (?!exp) 非exp
    (?<!exp) 非exp的后项

    实例分析

    1. 匹配含有q但是q后面不是u的单词

      一般做法:wq[^u]w

      但有个漏洞,比如Iraq,Benq,会被视为一个单词

      改进做法:wq(?!u)w

      使用负向宽零断言,参考链接:宽零断言-百度百科

    修饰符

    正则表达式格式为/pattern/,修饰符是对这个正则表达式的补充说明,写在后一个/的后面

    i 不区分大小写

    /abc/i 可以匹配 abc aBc ABc

    g 全局匹配

    不带g,找到一个符合的就停止查找下一个

    带g,找完所有符合的才停止

    m 多行匹配

    匹配字符串中含有 ,需要多行匹配

    s .包含换行符

    加了s使 "." 可以表示所有字符(包括换行符 )

    U 不重复匹配

    只匹配最近的一个字符串

    x 忽略模式中的空白

    将模式pattern(正则规则)中的空白忽略

  • 相关阅读:
    虚拟机配置桥接网络以及使用mobaxterm连接虚拟机
    maven依赖包问题2
    47.火狐浏览器登录过全球服务器之后,切换回本地服务器登录失败解决方法
    博客园美化
    vue拼图验证(vue-puzzle-vcode)
    vue使用axios
    vue中使用swiper
    VUE安装并配置
    vue中router-view不显示
    vue打包后空白
  • 原文地址:https://www.cnblogs.com/labster/p/13258287.html
Copyright © 2011-2022 走看看