正则表达式使用知识(日常翻阅)

正则表达式使用

一、字符匹配

1. 普通字符
  • 描述:直接匹配字符本身。
  • 示例 :
    • abc 匹配字符串中的 "abc"。
    • Hello 匹配字符串中的 "Hello"。
2. 特殊字符
  • .(点号) :
    • 描述:匹配任意单个字符(除换行符外)。
    • 示例 :
      • a.c 匹配 "abc", "adc", "a c"(注意空格也是一个字符)。
      • 1.1 匹配 "1a1", "121" 等。
  • \d :
    • 描述:匹配数字(0-9)。
    • 示例 :
      • \d{3} 匹配 "123", "456" 等三位数字。
      • \d+ 匹配一个或多个数字。
  • \w :
    • 描述 :匹配字母、数字或下划线(等价于 [A-Za-z0-9_])。
    • 示例 :
      • \w+ 匹配 "username", "Password123" 等。
      • \w{5} 匹配恰好五个字母、数字或下划线的组合。
  • \s :
    • 描述:匹配空白字符(空格、制表符、换行符等)。
    • 示例 :
      • \s+ 匹配一个或多个空白字符。
      • a\sb 匹配 "a b"(中间有一个空格)。
3. 字符集
  • [abc] :
    • 描述:匹配方括号内的任意单个字符。
    • 示例 :
      • [aeiou] 匹配任意一个元音字母。
      • [0-9] 匹配任意一个数字。
  • [^abc] :
    • 描述:匹配不在方括号内的任意单个字符。
    • 示例 :
      • [^0-9] 匹配任意一个非数字字符。
      • [^A-Za-z] 匹配任意一个非字母字符。

二、量词

1. +(加号)
  • 描述:匹配前面的字符或子表达式一次或多次。
  • 示例 :
    • a+ 匹配 "a", "aa", "aaa" 等。
    • \d+ 匹配一个或多个数字。
2. *(星号)
  • 描述:匹配前面的字符或子表达式零次或多次。
  • 示例 :
    • a* 匹配 "", "a", "aa", "aaa" 等。
    • \s* 匹配零个或多个空白字符。
3. ?(问号)
  • 描述:匹配前面的字符或子表达式零次或一次(可选)。
  • 示例 :
    • colou?r 匹配 "color" 或 "colour"。
    • https? 匹配 "http" 或 "https"。
4. {n,m}(重复次数)
  • 描述 :匹配前面的字符或子表达式至少 n 次,至多 m 次。
  • 示例 :
    • \d{3,5} 匹配 3 到 5 位数字。
    • a{2,4} 匹配 "aa", "aaa", "aaaa"。

三、锚点

1. ^(脱字符号)
  • 描述:匹配字符串的开头。
  • 示例 :
    • ^Hello 匹配以 "Hello" 开头的字符串。
    • ^1 匹配以数字 "1" 开头的字符串。
2. $(美元符号)
  • 描述:匹配字符串的结尾。
  • 示例 :
    • world$ 匹配以 "world" 结尾的字符串。
    • \d$ 匹配以数字结尾的字符串。
3. \b(单词边界)
  • 描述:匹配单词的边界(如空格、标点符号或字符串的开头/结尾)。
  • 示例 :
    • \bcat\b 匹配独立的单词 "cat"。
    • \b\w+\b 匹配一个完整的单词。
4. \B(非单词边界)
  • 描述:匹配非单词边界。
  • 示例 :
    • \Bcat\B 匹配 "category" 中的 "cat"。
    • \B\w+\B 匹配单词的一部分。
5. 正向先行断言 (?=...)
  • 描述:匹配后面紧跟特定模式的位置,但不消耗字符。
  • 示例 :
    • a(?=b) 匹配后面紧跟 "b" 的 "a"。
    • \d+(?=%) 匹配百分比符号前的数字。
6. 负向先行断言 (?!...)
  • 描述:匹配后面不紧跟特定模式的位置。
  • 示例 :
    • a(?!b) 匹配后面不跟 "b" 的 "a"。
    • \d+(?!\.) 匹配不以点号结尾的数字。

四、综合案例及解释

  1. 匹配邮箱地址

    regex 复制代码
    [\w.-]+@[\w.-]+\.\w+
    • 解释 :
      • [\w.-]+:匹配用户名(允许字母、数字、下划线、点和短横线)。
      • @:匹配邮箱符号。
      • [\w.-]+:匹配域名。
      • \.\w+:匹配顶级域名(如 .com, .cn)。
  2. 匹配电话号码

    regex 复制代码
    (\+86)?\d{11}
    • 解释 :
      • (\+86)?:匹配可选的国际区号 "+86"。
      • \d{11}:匹配 11 位数字(中国手机号码)。
  3. 匹配日期(YYYY-MM-DD 格式)

    regex 复制代码
    \d{4}-\d{2}-\d{2}
    • 解释 :
      • \d{4}:匹配四位年份。
      • -\d{2}:匹配月份和日期。
  4. 匹配包含数字的单词

    regex 复制代码
    \b\w*\d\w*\b
    • 解释 :
      • \b:确保匹配完整的单词。
      • \w*\d\w*:匹配包含至少一个数字的单词。
  5. 匹配特定格式的URL

    regex 复制代码
    https?://[\w.-]+(\.[\w-]+)+
    • 解释 :
      • https?:匹配 "http" 或 "https"。
      • ://:匹配协议和域名的分隔符。
      • [\w.-]+:匹配域名主体。
      • (\.[\w-]+)+:匹配顶级域名(如 .com, .cn)。
相关推荐
Moshow郑锴13 分钟前
sql-pipeline - 基于PostgreSQL的SQL健康检查与发布编排平台
java·sql
海绵宝宝转agent7 小时前
learn-claude-code第1-5章开源学习笔记分享
人工智能·笔记·python·学习
小奇不哭7 小时前
ROS2 单节点,RGB-D 深度相机局部路径提取 + B 样条平滑路径 + YOLOv8 障碍物检测 + 深度测距,用于移动机器人视觉局部循迹。
python·yolov8·ros2·cv2·路径探索循迹
小小龙学IT7 小时前
Python scikit-learn 机器学习库深度解析
python·机器学习·scikit-learn
Wang's Blog7 小时前
Java 项目实战: 外卖平台优化-Nginx配置文件结构与块层级
java·开发语言·nginx
2601_962071578 小时前
类变量和全局变量的查找路径有什么区别?
开发语言·python
卷无止境9 小时前
独立开发者的"富矿地带":哪些垂直领域值得你押注一辈子?
后端·python
\光辉岁月/9 小时前
5.java-数组
java·开发语言
Java后端的Ai之路9 小时前
Python进阶探索29_eval内置函数
开发语言·python·探索·eval·内置函数
计算机毕业编程指导师9 小时前
计算机毕设选题推荐:基于Hadoop与Spark的Steam游戏数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 深度学习
大数据·hadoop·python·计算机·spark·毕业设计·steam游戏