Yang's blog Yang's blog
首页
Java
密码学
机器学习
命令手册
关于
友链
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

xiaoyang

编程爱好者
首页
Java
密码学
机器学习
命令手册
关于
友链
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • SpringCloud

    • 微服务架构介绍
    • SpringCloud介绍
    • Spring Cloud:生产者与消费者
    • Spring Cloud Eureka:构建可靠的服务注册与发现
    • Spring Cloud Ribbon:负载均衡
    • Spring Cloud Fegin:服务调用
    • Spring Cloud Hystrix:熔断器
    • Spring Cloud Zuul:统一网关路由
    • Spring Cloud Config:配置中心
  • Java后端框架

    • LangChain4j

      • 介绍
      • 快速开始
      • Chat and Language Models
      • Chat Memory
      • Model Parameters
      • Response Streaming
      • AI Services
      • Agent
      • Tools (Function Calling)
      • RAG
      • Structured Outputs
      • Classification
      • Embedding (Vector) Stores
      • Image Models
      • Quarkus Integration
      • Spring Boot Integration
      • Kotlin Support
      • Logging
      • Observability
      • Testing and Evaluation
      • Model Context Protocol
  • 八股文

    • 操作系统
    • JVM介绍
    • Java多线程
    • Java集合框架
    • Java反射
    • JavaIO
    • Mybatis介绍
    • Spring介绍
    • SpringBoot介绍
    • Mysql
    • Redis
    • 数据结构
    • 云计算
    • 设计模式
    • 计算机网络
    • 锁核心类AQS
    • Nginx
  • 前端技术

    • 初识Vue3
    • Vue3数据双向绑定
    • Vue3生命周期
    • Vue-Router 组件
    • Pinia 集中式状态存储
  • 中间件

    • RocketMQ
  • 开发知识

    • 请求参数注解
    • 时间复杂度和空间复杂度
    • JSON序列化与反序列化
    • Timestamp vs Datetime
    • Java开发中必备能力单元测试
    • 正向代理和反向代理
    • 什么是VPN
    • 正则表达式
      • 1. 正则表达式基础
        • 1.1 什么是正则表达式?
        • 1.2 正则表达式基本语法
      • 2. 字符类(Character Classes)
      • 3. 预定义字符
      • 4. 分组(Grouping)与引用
        • 4.1 捕获组(Capturing Groups)
        • 4.2 反向引用
      • 5. 贪婪与惰性匹配
      • 6. 断言(Assertions)
        • 6.1 位置匹配
        • 6.2 前后向断言
      • 7. 实践案例
        • 7.1 邮箱验证
        • 7.2 手机号匹配
        • 7.3 URL 匹配
  • Java
  • 开发知识
xiaoyang
2025-03-03
目录

正则表达式

# 正则表达式(Regex)

正则表达式(Regular Expression,简称Regex)是一种用于匹配字符串的强大工具,在文本搜索、数据提取、字符串替换等领域广泛应用。本教程将从基础到高级,系统介绍正则表达式的使用方法。


# 1. 正则表达式基础

# 1.1 什么是正则表达式?

正则表达式是一种模式(Pattern),用于匹配文本中的特定字符串。它可以用于:

  • 搜索(查找符合特定规则的文本)
  • 匹配(判断字符串是否符合规则)
  • 替换(修改符合规则的文本)

在Python、JavaScript、Java等多种编程语言中,正则表达式都有相应的支持库。

# 1.2 正则表达式基本语法

符号 含义 示例
. 匹配任意单个字符(除换行符) c.t 可匹配 cat, cut, c1t 等
^ 匹配字符串的开头 ^hello 可匹配 "hello world" 但不匹配 "hi hello"
$ 匹配字符串的结尾 world$ 可匹配 "hello world" 但不匹配 "world hello"
* 匹配前一个字符 0 次或多次 ab*c 可匹配 "ac", "abc", "abbc"
+ 匹配前一个字符 1 次或多次 ab+c 可匹配 "abc", "abbc",但不匹配 "ac"
? 匹配前一个字符 0 次或1次 ab?c 可匹配 "ac" 和 "abc"
{n} 匹配前一个字符 n 次 a{3} 只匹配 "aaa"
{n,} 匹配前一个字符 至少 n 次 a{2,} 匹配 "aa", "aaa", "aaaa"
{n,m} 匹配前一个字符 n 到 m 次 a{2,4} 匹配 "aa", "aaa", "aaaa"
[] 匹配括号中的任意字符 [abc] 可匹配 "a", "b", "c"
| 逻辑“或”
\ 转义特殊字符 \. 可匹配 .(点)本身

# 2. 字符类(Character Classes)

字符类用于定义一组可匹配的字符。

字符类 含义 示例
[abc] 匹配 a、b 或 c [ch]at 可匹配 "cat" 或 "hat"
[^abc] 非 a、b、c [^0-9] 匹配非数字字符
[a-z] 匹配小写字母 [a-zA-Z] 匹配所有英文字母
[0-9] 匹配数字 [0-9]+ 匹配 "123", "456"
. 匹配任意字符(除换行) a.c 可匹配 "abc",但不匹配 "ac"

# 3. 预定义字符

正则表达式提供了一些预定义的字符,代表常见的字符类型。

预定义字符 含义 示例
\d 数字 [0-9] \d+ 匹配 "123", "42"
\D 非数字 [^0-9] \D+ 匹配 "abc", "XYZ"
\w 单词字符 [a-zA-Z0-9_] \w+ 匹配 "hello", "world_123"
\W 非单词字符 [^a-zA-Z0-9_] \W+ 匹配 "@#$%!"
\s 空白字符(空格、制表符、换行符) \s+ 可匹配 " "
\S 非空白字符 \S+ 可匹配 "hello"

# 4. 分组(Grouping)与引用

# 4.1 捕获组(Capturing Groups)

用小括号 () 将部分模式分组,以便引用。

示例:

(\d{3})-(\d{2})-(\d{4})
1

匹配 "123-45-6789",并捕获:

  • \1:123
  • \2:45
  • \3:6789

# 4.2 反向引用

在替换或匹配中,可用 \1 引用之前匹配的组。

示例:

(\w+)\s\1
1

可匹配 "hello hello"(重复单词)。


# 5. 贪婪与惰性匹配

模式 匹配规则
.* 贪婪匹配(尽可能多匹配)
.*? 惰性匹配(尽可能少匹配)

示例:

<.*>
1

匹配 <div>hello</div>,但会匹配整个 <div>hello</div>。

如果使用:

<.*?>
1

则只匹配 <div>。


# 6. 断言(Assertions)

# 6.1 位置匹配

断言 含义 示例
^ 开头匹配 ^hello 只匹配 "hello world"
$ 结尾匹配 world$ 只匹配 "hello world"
\b 单词边界 \bcat\b 只匹配 " cat "
\B 非单词边界 \Bcat\B 不匹配 " cat "

# 6.2 前后向断言

断言 描述 示例
(?=...) 正向预查(后面必须是...) \d(?=px) 匹配 "10px" 中的 10
(?!...) 负向预查(后面不能是...) \d(?!px) 匹配 "10kg" 中的 10
(?<=...) 正向回顾(前面必须是...) (?<=\$)\d+ 匹配 "$100" 中的 100
(?<!...) 负向回顾(前面不能是...) (?<!\$)\d+ 不匹配 "$100"

# 7. 实践案例

# 7.1 邮箱验证

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
1

# 7.2 手机号匹配

^1[3-9]\d{9}$
1

# 7.3 URL 匹配

https?:\/\/(www\.)?[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(/.*)?$
1
编辑 (opens new window)
上次更新: 2025/04/01, 01:48:12

← 什么是VPN

最近更新
01
操作系统
03-18
02
Nginx
03-17
03
后端服务端主动推送消息的常见方式
03-11
更多文章>
Theme by Vdoing | Copyright © 2023-2025 xiaoyang | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式