十分钟带你深入浅出正则表达式——从基础到进阶

   日期:2024-12-17    作者:hubinusb 浏览:68    移动:http://w.yusign.com/mobile/quote/892.html

正则表达式(Regular expressions,也叫 REs、 regexs 或 regex patterns,本质上是嵌入 Python 内部并通过模块提供的一种微小的、高度专业化的编程语言。

正则常用功能

1、可以为想要匹配的可能字符串编写规则。这些字符串可能是英文句子、邮箱地址、TeX 命令或任何你喜欢的内容。

2、可以提出诸如“此字符串是否与表达式匹配?”、“字符串中是否存在表达式的匹配项?”之类的问题。

3、可以用正则来修改字符串,或以各种方式将其拆分。

正则的优点: 速度快, 效率⾼, 准确性⾼。

正则的缺点: 新⼿上⼿难度有点⼉⾼。


正则表达式是一种用来匹配字符串模式的表达式。它通过使用特殊的符号和字符组合,定义了一套匹配规则。我们抓取到的⽹⻚源代码本质上就是⼀个超⻓的字符串, 想从⾥⾯提取内容。⽤正则再合适不过了

元字符: 具有固定含义的特殊符号

常⽤元字符:

  • 匹配任意字符
  • 匹配字母或数字或下划线
  • 匹配数字
  • 匹配空白字符
  • 匹配换行符
  • 匹配制表符
  • 匹配非字母或数字或下划线
  • 匹配非数字
  • 匹配非空白字符
  • 匹配单词边界
  • 匹配非单词边界
  • 匹配字符串的开头
  • 匹配字符串的末尾
  • 匹配a或b
  • 字符集,匹配括号内的任意字符
  • 匹配不在括号内的任意字符
  • 特征标群,用于匹配与括号内的字符完全相同的字符串
  • 转义字符,用于匹配特殊字符,如[]、)、.等
 

量词: 控制前⾯的元字符出现的次数

  • 匹配前面的字符出现0次或无限次
  • 匹配前面的字符出现1次或无限次
  • 匹配前面的字符出现0次或1次
  • 匹配前面的字符出现n次
  • 匹配前面的字符出现n到m次
  • 匹配前面的字符出现0到m次
  • 匹配前面的字符出现n次或无限次
 

这些符号可以组合使用,形成复杂的匹配规则。


Python的模块提供了一系列函数来使用正则表达式。以下是一些常用函数

1.

用于从字符串的开始位置匹配正则表达式,如果匹配成功,则返回一个匹配对象;否则返回。

 

案例解读:此代码匹配一个电话号码格式的字符串,如。正则表达式定义了3个数字、一个、4个数字、再一个、最后是4个数字。

2.

用于在整个字符串中搜索第一个匹配项,即使匹配项不在字符串的开始位置。

 

案例解读:会在整个字符串中搜索电话号码,找到后返回匹配对象,返回匹配的字符串。

3.

返回所有匹配的字符串,对 string 的扫描从左至右,匹配结果按照找到的顺序返回。 空匹配也包括在结果中,以列表形式返回。

 

案例解读:会找到所有的数字,输出结果为。

4.

返回通过使用 repl 替换在 string 最左边非重叠出现的 pattern 而获得的字符串。 如果样式没有找到,则不加改变地返回 string。

 

案例解读:该正则表达式将字符串中的所有数字替换为,输出结果为。


正则表达式不仅可以用于简单的模式匹配,还可以通过分组、断言等方式,处理更复杂的文本。

1. 分组(Groups

使用括号可以创建捕获组,匹配的内容可以通过方法获取。

 

案例解读:通过分组,可以分别提取电话号码的各个部分。

2. 贪婪匹配和惰性匹配

1、贪婪匹配 正则表达式默认是贪婪匹配,即的匹配字符。

  • :匹配任意字符,尽可能多的匹配字符(贪婪匹配)。

2、惰性匹配 在正则表达式中,使用问号?表示该字符为非贪婪匹配,即的匹配字符。

  • :匹配任意字符,但尽可能少的匹配字符(惰性匹配)。

默认情况下,正则表达式是贪婪的,尽可能多地匹配字符。通过在量词后面加可以实现非贪婪匹配。

 

案例解读:贪婪匹配会匹配整个字符串,而只匹配到第一个。

3. 前后向断言(Lookahead 和 Lookbehind

断言用于检查匹配字符的前后是否满足某种条件。

  • 前向断言,检查后面的内容是否满足。
  • 后向断言,检查前面的内容是否满足。
 

案例解读:该正则表达式会找到,因为它后面跟着一个空格。


四、实际应用案例

1. 邮箱验证

正则表达式常用于验证邮箱地址的格式。

 
2. 提取网址中的域名

使用正则表达式从URL中提取域名。

 

五、总结

正则表达式作为处理字符串的强大工具,在Python的模块中提供了强大的功能。通过掌握正则表达式的基本符号和高级用法,可以轻松处理复杂的文本匹配需求。希望本文通过详细的讲解和实际案例,帮助你更好地理解和运用正则表达式。


推荐阅读

  • Python官方文档:https://docs.python.org/zh-cn/3/library/re.html
  • 正则表达式速查表:https://www.regex101.com
本文地址:http://w.yusign.com/quote/892.html    述古往 http://w.yusign.com/static/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关行情
推荐行情
点击排行
{
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  版权声明  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号