沉梦听雨的编程指南 沉梦听雨的编程指南
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 基础篇
  • MySql
  • Redis
  • 达梦数据库
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • RPC
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 搜索引擎
  • 多媒体框架
  • 虚拟机
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 随笔
  • 前端环境搭建
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 脚手架搭建
  • 瑞吉外卖
  • 黑马点评
  • vue-blog
  • 沉梦接口开放平台
  • 用户中心
  • 聚合搜索平台
  • 仿12306项目
  • 壁纸小程序项目
  • RuoYi-Vue
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
Github (opens new window)

沉梦听雨

时间是最好的浸渍剂,而沉淀是最好的提纯器🚀
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 基础篇
  • MySql
  • Redis
  • 达梦数据库
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • RPC
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 搜索引擎
  • 多媒体框架
  • 虚拟机
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 随笔
  • 前端环境搭建
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 脚手架搭建
  • 瑞吉外卖
  • 黑马点评
  • vue-blog
  • 沉梦接口开放平台
  • 用户中心
  • 聚合搜索平台
  • 仿12306项目
  • 壁纸小程序项目
  • RuoYi-Vue
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
Github (opens new window)
  • 开发工具篇

  • 工具库篇

  • 开发技巧篇

    • 常见数据校验注解
    • 字符串拼接的5种方式
    • 遍历集合的N种方式
    • 集合使用注意事项总结
    • 字符串处理最佳实践
    • 时间字段处理小记
    • Curl用法解析
    • 列表分页的两种实现方案
    • HashMap根据value获取key
    • Map的7种遍历方式
    • 正则表达式
      • 一、正则表达式简介
      • 二、基础语法入门
        • 1. 字符匹配
        • 2. 量词
        • 3. 特殊字符与分组
      • 三、实战演练
        • 1. 邮箱验证
        • 2. 提取URL中的域名
      • 四、在线测试工具
      • 学习参考
    • 二维码扫码登录学习
    • 脱敏最佳实践
    • 实时汇率获取
    • System-getProperty方法获取属性
    • 文件url转Base64编码
  • 工具类系列

  • 随笔

  • 开发日常
  • 开发技巧篇
沉梦听雨
2024-05-10
目录

正则表达式

# 正则表达式学习指南

在编程的世界里,正则表达式(Regular Expressions,简称regex)是一门不可或缺的艺术,它赋予了开发者强大的文本处理能力,让看似复杂的字符串匹配和替换任务变得简单而高效。本文旨在为初学者揭开正则表达式的神秘面纱,引导你掌握这一强大工具,成为文本处理领域的高手。

# 一、正则表达式简介

正则表达式是一种模式匹配语言,用于在文本中搜索、替换或提取符合特定规则的字符串。无论是验证输入数据、清洗数据、还是从大量文本中提取信息,正则表达式都是你的得力助手。

# 二、基础语法入门

# 1. 字符匹配

  • .(点号):匹配任意单个字符(除换行符外)。
  • [abc]:匹配括号内的任何一个字符,如'a'、'b'或'c'。
  • [^abc]:匹配除括号内字符之外的任何字符。
  • \d:匹配数字(0-9)。
  • \D:匹配非数字字符。
  • \w:匹配字母、数字或下划线。与 "[A-Za-z0-9_]" 等效。
  • \W:匹配非字母、数字或下划线的字符。与 "[^A-Za-z0-9_]" 等效。
  • \s:匹配任何空白字符,如空格、制表符、换页符等。
  • \S:匹配非空白字符。

# 2. 量词

  • *:匹配前面元素的零次或多次出现。
  • +:匹配前面元素的一次或多次出现。
  • ?:匹配前面元素的零次或一次出现。
  • {n}:匹配前面元素恰好 n 次出现。
  • {n,}:匹配前面元素至少 n 次出现。
  • {n,m}:匹配前面元素至少n次,但不超过m次出现。

# 3. 特殊字符与分组

  • \:用于转义特殊字符,使其作为普通字符处理。
  • (expr):将expr视为一个单元进行匹配,并可用于捕获匹配的内容。
  • |:表示选择,匹配左边或右边的表达式。
  • ^:匹配字符串的开始。
  • $:匹配字符串的结束。

# 三、实战演练

# 1. 邮箱验证

假设我们要验证一个字符串是否符合邮箱的基本格式,可以使用如下正则表达式:

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
1
  • ^ 表示字符串开始。
  • [a-zA-Z0-9._%+-]+ 匹配用户名部分,可以包含字母、数字、点号、下划线、百分号、加号、减号。
  • @ 必须出现的符号。
  • [a-zA-Z0-9.-]+ 匹配域名部分。
  • \. 必须出现的点号,用来分隔域名和顶级域名。
  • [a-zA-Z]{2,} 匹配至少两个字母的顶级域名。
  • $ 表示字符串结束。

# 2. 提取URL中的域名

如果我们想从一段文本中提取所有的网址域名,可以使用以下正则:

\b(?:https?|ftp)://[^\s/$.?#].[^\s]*
1
  • \b 单词边界,确保URL是独立的。
  • (?:https?|ftp) 匹配http、https或ftp协议。
  • :// URL中协议后的分隔符。
  • [^\s/$.?#] 匹配除了空白、斜杠、问号、点号、井号之外的字符,即域名开始。
  • [^\s]* 匹配域名剩余部分,直到遇到空白字符。

# 四、在线测试工具

学习正则表达式的过程中,推荐使用在线测试工具如 RegExr、Regex101 等,它们不仅提供了实时的匹配预览,还内置了详细的教程和模式解释,极大提升了学习效率。

工具地址:

  • 正则表达式可视化工具 | 菜鸟工具 (jyshare.com) (opens new window)

  • 正则表达式在线测试 | 菜鸟工具 (jyshare.com) (opens new window)

  • RegExr: Learn, Build, & Test RegEx (opens new window)

  • regex101: build, test, and debug regex (opens new window)

# 学习参考

  • 正则表达式 – 教程 | 菜鸟教程 (runoob.com) (opens new window)
  • Java 正则表达式 | 菜鸟教程 (runoob.com) (opens new window)
上次更新: 2025/1/13 17:43:55
Map的7种遍历方式
二维码扫码登录学习

← Map的7种遍历方式 二维码扫码登录学习→

Theme by Vdoing | Copyright © 2023-2025 沉梦听雨 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式