当前位置: 首页 > news >正文

正则表达式中的元字符

正则表达式中的元字符(metacharacters)是具有特殊含义的字符,它们用于构建复杂的匹配模式。以下是常见的正则表达式元字符及其用途:


1. 基本元字符

元字符 描述
. 匹配任意单个字符(除换行符 \n 外)。
^ 匹配字符串的开始位置(或在多行模式下匹配行首)。
$ 匹配字符串的结束位置(或在多行模式下匹配行尾)。
\ 转义字符,用于取消元字符的特殊含义(如 \. 匹配实际的点号)。

2. 字符类

元字符 描述
[...] 匹配括号内任意一个字符(如 [aeiou] 匹配任意元音)。
[^...] 匹配不在括号内的任意字符(如 [^0-9] 匹配非数字)。
\d 匹配数字(等价于 [0-9])。
\D 匹配非数字(等价于 [^0-9])。
\w 匹配单词字符(字母、数字、下划线,等价于 [a-zA-Z0-9_])。
\W 匹配非单词字符(等价于 [^a-zA-Z0-9_])。
\s 匹配空白字符(空格、制表符 \t、换行符 \n 等)。
\S 匹配非空白字符

3. 量词(重复匹配)

元字符 描述
* 匹配前一个字符 0 次或多次(贪婪模式)。
+ 匹配前一个字符 1 次或多次(贪婪模式)。
? 匹配前一个字符 0 次或 1 次(或用于非贪婪模式,如 .*?)。
{n} 匹配前一个字符 恰好 n 次(如 \d{3} 匹配 3 位数字)。
{n,} 匹配前一个字符 至少 n 次
{n,m} 匹配前一个字符 n 到 m 次(如 \w{2,4} 匹配 2~4 个单词字符)。

4. 分组与捕获

元字符 描述
(...) 捕获分组,将括号内内容作为一个整体匹配并捕获。
(?:...) 非捕获分组,仅分组但不捕获。
| 或逻辑,匹配左边或右边的模式(如 cat|dog 匹配 "cat" 或 "dog")。

5. 边界与断言

元字符 描述
\b 匹配单词边界(如 \bword\b 匹配独立的 "word")。
\B 匹配非单词边界
(?=...) 正向先行断言,匹配后面紧跟指定模式的位置(不消耗字符)。
(?!...) 负向先行断言,匹配后面不跟指定模式的位置。
(?<=...) 正向后行断言,匹配前面是指定模式的位置(需固定宽度,如 (?<=\d))。
(?<!...) 负向后行断言,匹配前面不是指定模式的位置。

6. 其他特殊字符

元字符 描述
\n 匹配换行符。
\t 匹配制表符。
\r 匹配回车符。
\xHH 匹配十六进制值 HH 对应的字符(如 \x41 匹配 "A")。

示例

  • 邮箱匹配:^\w+([.-]?\w+)*@\w+([.-]?\w+)*(\.\w{2,3})+$
  • 日期(YYYY-MM-DD):^\d{4}-\d{2}-\d{2}$
  • 提取 HTML 标签内容:<([a-z]+)>(.*?)<\/\1>

注意事项

  1. 元字符在不同正则引擎(如 PCRE、JavaScript)中可能有细微差异。
  2. 使用 \ 转义时需注意语言中的字符串转义(如 Python 中用 \\d 表示 \d)。
  3. 贪婪模式(*/+)与非贪婪模式(*?/+?)的区别。
  4. 当 ? 直接跟在普通字符后(如 a?),表示匹配前一个字符 0 次或 1 次(即“可选”)。
  5. 当 ? 跟在量词后(如 *?、+?、??、{n,m}?),表示将贪婪模式改为非贪婪模式(懒惰模式)。
http://www.sczhlp.com/news/566.html

相关文章:

  • 7/27
  • I2C
  • 小新Pad2022刷机记录
  • 每日随笔
  • 01API语法与路由配置详解
  • 图 - -刘-j-x
  • 02路由配置与参数解析详解
  • 03Gin中间件开发与鉴权实践
  • day27
  • 浅析扫描线
  • 入门
  • CRUD
  • 暑期周总结(五)
  • 用 Python 实现多干扰线图像验证码的识别系统
  • Python 实现多干扰线图像验证码识别
  • 学习链接
  • helm环境快速部署实战
  • PlantUML绘制时序图
  • Datawhale AI夏令营 Dify入门 Task05 智能客服
  • ICPC 2024 网络赛(I)
  • LED控制原理
  • 【ESP8266】Vscode + platformIo + Esp8266 新建工程 关键步骤
  • Revo Uninstaller Pro专业版领取:2025最佳Windows软件卸载工具
  • 北大 2024 强基数学
  • 付老师名言
  • [羊城杯 2021]Baby_Forenisc-内存取证-Volatility 2工具下载使用- Volatility 2.6 的 Linux 免安装版(Standalone 版本)
  • 开发集合控件的拖拽流程优化——以TreeView为例
  • 第七天
  • 基于深度学习的YOLO框架的7种交通场景识别项目系统【附完整源码+数据集】
  • 2-2 点灯例程(寄存器开发) - LI,Yi