Nginx 中的正则表达式

以下是修正后的正则表达式元字符和重复符号的Markdown表格:


1. 元字符表

代码 说明
. 匹配除换行符以外的任意字符
\w 匹配字母、数字、中文、下划线
\s 匹配空白字符(空格、制表符等)
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结尾

2. 重复符号表

代码 说明
* 重复前一个字符或子表达式 零次或多次(例如 a* 匹配空字符串、aaa 等)
+ 重复前一个字符或子表达式 一次或多次(例如 a+ 匹配 aaa,但不匹配空字符串)
? 重复前一个字符或子表达式 零次或一次(例如 colou?r 匹配 colorcolour
{n} 重复前一个字符或子表达式 精确 n 次(例如 \d{4} 匹配 4 位数字)
{n,} 重复前一个字符或子表达式 至少 n 次(例如 a{2,} 匹配 aaaaa 等)
{n,m} 重复前一个字符或子表达式 n 到 m 次(例如 \d{2,4} 匹配 2 到 4 位数字)

3. 示例


1. 核心概念

  • 转义符号
    使用反斜杠 \ 取消元字符的特殊含义。例如,匹配 . 需写成 \.,匹配 / 需写成 \/

  • 分组与取值
    使用括号 () 对内容进行分组,并通过 $1, $2 等引用分组结果。例如:
    (\d+) 匹配数字并保存为第一个分组,后续可通过 $1 调用。


2. 示例说明

场景描述

  • 原始 URL
    /admin/website/article/35/change/uploads/party/5.jpg
  • 目标 URL
    /static/uploads/party/5.jpg

正则表达式与重写规则修正

  1. 匹配原始 URL 的正则表达式

    ^/admin/website/article/(\d+)/change/uploads/(\w+)/(\w+)\.(png|jpg|gif|jpeg|bmp)$
    
    • 修正说明
      • 使用 ^$ 确保精确匹配完整路径。
      • 修正路径分隔符(使用 / 而非 \)。
      • 文件扩展名调整为独立选项(png|jpg|gif|jpeg|bmp)。
      • 分组结构:$1 匹配数字 ID,$2 匹配目录名,$3 匹配文件名,$4 匹配扩展名。
  2. 重写规则

    rewrite ^/admin/website/article/(\d+)/change/uploads/(\w+)/(\w+)\.(png|jpg|gif|jpeg|bmp)$ /static/uploads/$2/$3.$4 last;
    
    • 修正说明
      • 路径修正为 /article 以匹配原始 URL。
      • 使用 $2$3 分别引用目录名和文件名,$4 引用扩展名。

3. 关键语法解析

语法 说明
(\d+) 匹配 1 个或多个数字,保存为分组
(\w+) 匹配字母/数字/下划线,保存为分组
\.(png) 匹配 .png 扩展名
$2 引用第二个分组的结果

4. 验证工具推荐

posted @ 2025-03-16 18:17  gamcau_fung  阅读(84)  评论(0)    收藏  举报