• 正则表达式详细知识点


    1 介绍

    正则表达式是由普通字符(例如字符a到z)以及特殊字符(称为元字符)组成的文字模式。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行平匹配。

    正则能做什么:

    数据隐藏:(136****520张先生)
    数据采集:(数据爬虫)
    数据过滤:(论坛敏感词过滤)
    数据验证:(表单验证、手机号码、邮箱地址)

    1.2 匹配模式

    匹配模式也就是修饰符:
    表示正则匹配的附加规则,放在正则模式的最尾部
    修饰符可以单个使用,也可以多个一起使用

    在正在表达式中,匹配模式常用的有两种形式:
    g:global缩写,代表全局匹配,匹配除所有满足条件的结果,不加g第一次匹配成功后,正则对象就停止向下匹配。

    i:ignore缩写,代表忽略大小写,匹配时,会自动忽略字符串的大小写。

    2 匹配符(查什么)

    字符簇代表是一个范围,但是匹配时,只能匹配某个福鼎的结果。

    字符集含义
    [a-z]匹配字符a-z之间的任一字符
    [A-Z]匹配字符A-Z之间的任一字符
    [0-9]匹配数据0-9之间的任一数字
    [0-9a-z]匹配数据0-9 或 字符a-z之间任意字符
    [0-9a-zA-Z]匹配数字0-9、字符a-z、字符A-Z之间任一字符
    [abcd]匹配字符a或b或c或d
    [1234]匹配数据1或2或3或4

    在字符簇中,通过一个^(脱字符)来表示取反的含义。

    字符簇含义
    [^a-z]匹配除字符a-z以外的任一字符
    [^0-9]匹配除数据0-9以外的任一字符
    [^abcd]匹配除a、b、c、d以外的任一字符

    几个比较常用的特殊的匹配符(常用)

    字符簇含义
    \d匹配一个数字字符,与使用[0-9]等价
    \D匹配一个非数字字符,与[^0-9]等价
    \w匹配包括下划线的任何字母、数据、下划线字符,还可以使用[0-9a-zA-Z]
    \W匹配任何非字母、数字、下划线字符,等价于[^\w]
    \s匹配任何空白字符tab、空格
    \S匹配任何非空白字符,等价于[^\s]
    .匹配除 \n 以外的任何单个字符
    [\u4e00-\u9fa5]匹配中文字符中任一字符

    3 限定符(查多少)

    *:匹配前面子表达式零次或多次,0到多
    +:匹配前面子表达式一次或多次,1到多
    ?:匹配前面子表达式零次或一次,0或1
    {n}:匹配确定的 n 次
    {n,}:至少匹配 n 次
    {n,m}:最少匹配 n 次、最多匹配 m 次

    4 定位符(从哪查)

    ^(脱字符):匹配输入字符串的开始位置
    $:匹配输入字符串的结束位置
    \b:匹配一个单词的边界
    \B:匹配非单词的边界

    匹配手机号:^1[34578]\d{9}
    
    • 1

    匹配am是一个单词

    i am 张三
    规则:\bam\b
    
    • 1
    • 2

    5 转义字符

    因为在正则表达式中 .(点)+\ 等是属于表达式的一部分,但是我们在匹配时,字符串中也需要匹配这些特殊字符,所以我们必须使用 反斜杠 对某些特殊字符进行转义

    点号 .
    小括号 ()
    中括号 []
    左斜杠 /
    右斜杠 \
    选择匹配符 |
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    eg. 匹配一个合法的URL

    http://www.couragesteak.com
    规则:\w+:\/\/\w+\.\w+\.\w+
    
    • 1
    • 2

    6 或者的用法

    # 匹配苹果设备
    字符:ipad,iphone,iwatch,imac,iccc,i5t,i777
    规则:\bi(pad|phone|mac|watch)\b
    
    • 1
    • 2
    • 3

    7 预查

    正向预查:正向往后查
    正预测:往前看看,但不真查
    前瞻:
    先行断言:还没到,就判断结论

    需求:将字符串里面的ing结尾的词根部分找出

    hello, when i am working, do not coming
    
    规则1:\b\w+ing\b
    结果:working、coming
    
    规则2:\b\w+(?=ing\b)
    结果:work、com
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    负向预查:
    负预测:
    前瞻:
    先行否定:

    需求:将非ing结尾的单词找出来

    hello, when i am working, do not coming
    
    规则:\b\w+(?!ing)\w{3}\b
    分析:至少由4个字母
    结果:hello、when
    
    • 1
    • 2
    • 3
    • 4
    • 5

    8 贪婪与非贪婪

    贪婪模式:能匹配多的就不匹配少的(默认)

    惰性匹配(非贪婪):在限定符后面添加一个 ? ,优先匹配少的。

    参考地址:
    https://www.bilibili.com/video/BV1uC4y187dF

  • 相关阅读:
    48. 从零开始学springboot: 接入RocketMQ
    【无标题】
    来自 AI Secure 实验室的 LLM 安全排行榜简介
    【ELK】日志分析系统概述及部署
    13.一文彻底了解线程池
    【Leetcode】题目解析索引表
    爬虫之xpath
    猿创征文 |【数据结构】3个例题带你搞定图的遍历:深度优先搜索
    「秋招系列」:肝爆一周梳理了17份各个大厂的面试真题,速看!
    【C++】运算符重载 ⑤ ( 一元运算符重载 | 使用 成员函数 实现 前置 ++ 自增运算符重载 | 使用 成员函数 实现 前置 - - 自减运算符重载 )
  • 原文地址:https://blog.csdn.net/zx77588023/article/details/126385214