日常偷懒(一)正则表达式小记

平时工作中有很多drity work,学会偷懒之后真的可以帮我们省很多时间来摸鱼!

而正则表达式是我们的偷懒必备装备,会用以后用起来会特别爽~。

正则表达式(Regular Expression,简称 Regex)是一种用于匹配和操作文本模式的字符串工具,通过特殊语法规则可以快速搜索、替换或提取复杂文本中的特定内容。以下通过概念拆解与实例说明其核心用法:


一、基础概念

1. 核心功能
  • 模式匹配:验证字符串是否符合特定规则(如邮箱格式)。
  • 文本提取:从日志、网页等数据中抓取目标信息(如日期、电话号码)。
  • 批量替换:自动化修改文本中的错误或格式(如统一日期格式)。
2. 语法组成
类别 符号 作用 示例
普通字符 a, 1, % 直接匹配对应字符 a 匹配 “apple” 中的 a
元字符 . ^ $ 表示特殊规则(如任意字符、行首尾) ^a 匹配以 a 开头的行
量词 * + {n} 控制前面元素的重复次数 a{2} 匹配 “baad” 中的 aa
字符类 [abc] \d 匹配一组字符中的任意一个或预定义类别 \d 匹配任意数字
分组与捕获 ( ) (?: ) 将模式分组或捕获子匹配项 (ab)+ 匹配 “abab”

二、实例解析

1. 验证邮箱格式

需求:检查字符串是否符合标准邮箱格式(如 [email protected])。
正则表达式

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

分解说明

  • ^:匹配字符串开头。
  • [a-zA-Z0-9._%+-]+:用户名部分(允许字母、数字及特定符号),+ 表示至少1个字符。
  • @:固定符号。
  • [a-zA-Z0-9.-]+:域名部分(如 example)。
  • \.:转义后的点号 .
  • [a-zA-Z]{2,}$:顶级域名(如 com),{2,} 表示至少2个字母,$ 匹配字符串结尾。

2. 提取日期信息

需求:从文本中提取 YYYY-MM-DD 格式的日期。
正则表达式

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

分解说明

  • (\d{4}):捕获4位数字(年)。
  • -:匹配连字符。
  • (\d{2}):捕获2位数字(月)。
  • (\d{2}):捕获2位数字(日)。
    匹配示例
    字符串 "2023-10-05 会议记录" 中,可提取出 20231005 三个分组。

3. 替换HTML标签

需求:删除文本中的所有HTML标签。
正则表达式

<[^>]+>

分解说明

  • <:匹配标签开始的 <
  • [^>]+:匹配除 > 外的任意字符至少一次。
  • >:匹配标签结束的 >
    替换操作:将匹配到的内容(如 标题)替换为空字符串,得到纯文本“标题”。

三、进阶技巧

1. 贪婪与非贪婪匹配
  • 贪婪模式(默认):尽可能匹配更长的字符串。
    • 示例:a.*baabbab 中会匹配整个字符串。
  • 非贪婪模式(加 ?):匹配最短符合条件的字符串。
    • 示例:a.*?baabbab 中仅匹配 aab
2. 预查断言
  • 正向预查(?=pattern)
    • 示例:Windows(?=10) 匹配后面紧跟 “10” 的 “Windows”。
  • 负向预查(?!pattern)
    • 示例:\d{3}(?!-) 匹配不跟随连字符的三位数字。

四、工具推荐

  • 在线测试
    • RegExr:实时高亮匹配结果,支持语法解释。
    • Regex101:生成代码和详细匹配分析。
  • 学习资源
    • 《精通正则表达式》(书籍):系统学习正则引擎原理。
    • RegexOne:交互式练习教程。

总结

正则表达式通过简洁的符号组合实现复杂的文本操作,是数据处理、编程开发的必备技能。掌握其核心语法(如元字符、量词、分组)并配合实际场景练习,可显著提升文本处理效率。

你可能感兴趣的:(用AI满足我的好奇心,正则表达式,学习,AIGC,我的AI老师,python)