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

10.2 刷题知识点总结(1) ---- 正则表达式

核心概念与语法

正则表达式由普通字符(如字母、数字)和元字符(具有特殊含义的字符)组成。以下是常用元字符和语法:

1. 基础匹配
  • .:匹配任意单个字符(除换行符 \n
    • 例:a.b 匹配 “acb”、“a1b”,不匹配 “ab”、“a\nb”
  • []:匹配括号内的任意一个字符
    • 例:[abc] 匹配 “a”、“b” 或 “c”;[0-9] 匹配任意数字
  • [^]:匹配不在括号内的任意字符(取反)
    • 例:[^0-9] 匹配非数字字符
  • |:逻辑“或”,匹配两边的任意一个表达式
    • 例:cat|dog 匹配 “cat” 或 “dog”
2. 量词(匹配次数)
  • *:匹配前面的元素 0 次或多次
    • 例:a* 匹配 “”(空)、“a”、“aa”、“aaa” 等
  • +:匹配前面的元素 1 次或多次
    • 例:a+ 匹配 “a”、“aa”,不匹配 “”
  • ?:匹配前面的元素 0 次或 1 次(可选)
    • 例:a? 匹配 “” 或 “a”
  • {n}:匹配前面的元素 恰好 n 次
    • 例:a{3} 仅匹配 “aaa”
  • {n,}:匹配前面的元素 至少 n 次
    • 例:a{2,} 匹配 “aa”、“aaa” 等
  • {n,m}:匹配前面的元素 n 到 m 次(包含 n 和 m)
    • 例:a{1,3} 匹配 “a”、“aa”、“aaa”
3. 位置匹配(锚点)
  • ^:匹配字符串的开头
    • 例:^abc 匹配以 “abc” 开头的字符串(如 “abcd”)
  • $:匹配字符串的结尾
    • 例:xyz$ 匹配以 “xyz” 结尾的字符串(如 “axyz”)
  • \b:匹配单词边界(单词与非单词字符的位置)
    • 例:\bcat\b 匹配独立的 “cat”,不匹配 “category” 中的 “cat”
4. 转义字符

如果需要匹配元字符本身(如 .*( 等),需用 \ 转义:

  • 例:a\.b 匹配 “a.b”(而非 “acb”);\* 匹配 “*”
5. 预定义字符集
  • \d:匹配任意数字(等价于 [0-9]
  • \D:匹配非数字(等价于 [^0-9]
  • \w:匹配字母、数字、下划线(等价于 [a-z A-Z 0-9 _]
  • \W:匹配非单词字符(等价于 [^ a-z A-Z 0-9 _]
  • \s:匹配空白字符(空格、制表符 \t、换行符 \n 等)
  • \S:匹配非空白字符

常用示例

  1. 验证手机号(中国大陆)
    ^1[3-9]\d{9}$

    • 以 “1” 开头,第二位是 3-9,后面跟 9 位数字。
  2. 验证邮箱
    ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

    • 匹配类似 “user@example.com” 的邮箱格式。
  3. 提取 HTML 标签中的内容
    <title>(.*?)</title>

    • 用括号 () 定义分组,.*? 非贪婪匹配标签内的内容。
  4. 替换字符串中的空格
    \s+ 匹配一个或多个空格,替换为单个空格:

 "hello   world".replaceAll("\\s+", " ")

输出结果:

  "hello world"

注意事项

  • 贪婪匹配 vs 非贪婪匹配:默认是贪婪模式(尽可能多匹配),加 ? 切换为非贪婪模式(尽可能少匹配)。
    例:a.*b 匹配 “aabxb” 中的 “aabxb”,而 a.*?b 匹配 “aab”。
  • 不同语言的细微差异:Java 中需用双反斜杠 \\(如 \\d),而 Python、JavaScript 中用单反斜杠 \(如 \d)。
  • 性能问题:复杂的正则表达式可能效率较低,避免过度嵌套或不必要的贪婪匹配。
http://www.dtcms.com/a/434498.html

相关文章:

  • SPI总线介绍
  • 【LeetCode_206】反转链表
  • 品牌网站建设 磐石网络的确好沈阳唐朝网络的服务内容
  • LeetCode 215. 数组中的第K个最大元素
  • 老年实训室建设:筑牢老年护理专业学员的实操能力基础
  • 【深度学习新浪潮】基于Qwen3-8B入门LoRA完整指南
  • 数据库设计与UML图
  • 影视网站的设计与实现新泰程序开发
  • 阿里pdf解析方案Logics-Parsing如何用RL攻克复杂文档解析
  • MySQL 索引失效的常见场景与原因分析
  • 四川省建设厅网站川北医学院网页制作员工作厂家
  • 从直线到环形:解锁栈、队列背后的空间与效率平衡术
  • 操作系统全解析:Windows、macOS与Linux的深度对比与选择指南(AI)
  • 网站建设推广ppt模板网站模版防被偷
  • [创业之路-647]:互联网行业的产业链
  • 甘肃省省经合局网站建设的通知知乎app开发公司
  • 计算机视觉与深度学习 | MASt3R 前馈视觉模型:原理、公式与代码实现全解析
  • 作品展示网站源码贵阳企业网站设计制作
  • 【Linux 系统】命令行参数和环境变量
  • 如何用wordpress建一个网站太原建站模板搭建
  • DNS优选 2.6.3 |解锁专业版,优选最快DNS,享受快速且私密的互联网浏览体验
  • 云浮源峰网站建设工作室地址百度免费咨询
  • wordpress 公司网站有赞分销模式佣金
  • 冀icp 网站建设做seo哪些网站会好点
  • 基于YOLOv8-OBB的SAR图像目标检测系统
  • 《强化学习数学原理》学习笔记4——贝尔曼最优方程推理过程
  • 如何缩小物联网设备的 Docker 镜像
  • 513.找树左下角的值(二叉树算法题)
  • LeetCode:84.完全平方数
  • 《API网关性能优化指南:从请求拥堵到毫秒级响应,并发下的架构重构实践》