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

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

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,一个特别的日子。

进阶技巧

懒惰匹配与贪婪匹配

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

前瞻与后顾断言

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值