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

十分钟让你彻底明白正则表达式

当然要明白正则表达式一时半会肯定是不能完全记住的,需要有不断地训练以及记忆,今天先初步学习一下

1. 什么是正则表达式?

正则表达式是一种用于描述字符串搜索模式的特殊语法。它由普通字符(如a到z的字母)和特殊字符(元字符)组成,能够匹配符合特定规则的字符串集合。

2. 元字符初探
  • .:匹配除换行符以外的任意单个字符。
  • ^:匹配输入字符串的开始位置。
  • $:匹配输入字符串的结束位置。
  • *:匹配前面的子表达式零次或多次。
  • +:匹配前面的子表达式一次或多次。
  • ?:匹配前面的子表达式零次或一次。
3. 字符集与特殊字符
  • [ ]:字符集合,匹配集合中的任意字符。例如,[abc] 匹配 "a"、"b" 或 "c"。
  • [^ ]:否定字符集合,匹配不在集合中的任意字符。
  • \d:匹配数字字符,等价于 [0-9]
  • \s:匹配任何空白字符,如空格、制表符等。
4. 分组与捕获

圆括号 () 用于将多个字符组合成一个子表达式,并可以捕获匹配的文本供后续引用。例如,(abc)+ 匹配一个或多个连续的 "abc"。

实战演练

示例1:验证电子邮件地址

电子邮件地址的正则表达式可以非常复杂,但我们可以简化版本来演示:

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

这个表达式大致匹配了“用户名@域名.后缀”的结构。

示例2:提取电话号码

假设我们要从一个文本中提取所有格式为 (xxx) xxx-xxxx 的电话号码:

\(\d{3}\) \d{3}-\d{4}
示例3:替换日期格式

将日期从 YYYY-MM-DD 格式转换为 DD/MM/YYYY

import re  text = "今天是2023-04-01,一个特别的日子。"  
# 查找并替换  
new_text = re.sub(r'(\d{4})-(\d{2})-(\d{2})', r'\3/\2/\1', text)  
print(new_text)  # 输出:今天是01/04/2023,一个特别的日子。

进阶技巧

懒惰匹配与贪婪匹配

正则表达式默认采用贪婪匹配模式,即尽可能多地匹配字符。懒惰匹配(非贪婪匹配)则相反,尽可能少地匹配字符。通过在量词后添加 ? 来实现懒惰匹配,如 *?+???

前瞻与后顾断言

前瞻断言用于判断某个位置之后(或之前)的字符是否符合特定模式,但不包括这些字符在内。

  • 正向前瞻 (?=...)
  • 负向前瞻 (?!...)
  • 正向后顾 (?<=...)(注意:并非所有正则引擎都支持)
  • 负向后顾 (?<!...)(同样,并非所有正则引擎都支持)


http://www.mrgr.cn/news/18969.html

相关文章:

  • AI模型:追求全能还是专精?-- 之3:“智能”符号学诠释的程序逻辑分析
  • C++ ─── List的模拟实现
  • 牛心包瓣类医用生物瓣膜厚度无损检测
  • 暴力破解和撞库攻击有什么区别,怎么防御暴力破解和撞库攻击
  • 【JavaEE初阶】JVM内存划分和类加载过程以及垃圾回收
  • 5款文案自动生成器,高质量创意文案一键为你生成
  • Python控制流:循环控制(break, continue, pass)③
  • ArkTS组件和 JS 组件的区别
  • frida的使用
  • Spring MVC思想 实践开发 核心组件 流程分析
  • 某东东的jdgs算法分析--适合进阶学习
  • Modbus通信主站和从站点区别的理解
  • 【32项目】基于stm32f103c8t6WIFI远程监控智慧农业大棚(含完整代码)
  • PPT图表制作不再难!这款在线PPT软件让办公更简单!
  • 【主机入侵检测】Wazuh解码器之JSON解码器
  • 读书学习笔记入门 # Datawhale X 李宏毅苹果书 AI夏令营
  • 软考高级网络规划设计师含金量高吗?
  • mongodb 在 Windows 环境下迁移数据库的问题
  • 基于发布-订阅模型的音视频流分发框架
  • Mybatis分页查询主从表