十、正则表达式详解:掌握强大的文本处理工具(二)

简介: 十、正则表达式详解:掌握强大的文本处理工具(二)

🍀多字符匹配

  1. 星号(*):匹配0个或者多个字符
import re
text = '111-222-333'
result = re.match('[\d]', text) # 没有*,匹配第一个
result1 = re.match('[\d]*', text)  # 有*,从起始位置开始,匹配0或者多次
result2 = re.match('[-\d]*', text)   # 有*,从起始位置开始,匹配0或者多次
result3 = re.match('[-]*', text)  # 有*,从起始位置开始,匹配0或者多次
print(result.group(),len(result.group()))
print(result1.group(),len(result1.group()))
print(result2.group(),len(result2.group()))
print(result3.group(),len(result3.group()))

运行结果如下

注意:匹配不出来,只不过是空,并不会报错


  1. 加号(+):匹配一个或者多个
text = 'Q111-222-333'
result = re.match('[Q\d]+', text)
result1 = re.match('[\d]+', text)
print(result.group(),len(result.group()))
print(result1.group(),len(result1.group()))

运行结果如下

注意:有+,对[]里的内容匹配一次或者多次(至少一次)、从起始位置开始

  1. 问号(?):匹配0个或者1个
text = 'Q111-222-333'
result = re.match('[Q\d]?', text)
result1 = re.match('[\d]?', text)
print(result.group(),len(result.group()))
print(result1.group(),len(result1.group()))

运行结果如下

注意:从起始位置开始,和*有一点相近

  1. {m}:匹配指定个数m
text = 'Q111-222-333'
result = re.match('[Q\d]{2}', text)
result1 = re.match('[Q\d]{5}', text)
print(result.group(),len(result.group()))
print(result1.group(1),len(result1.group()))

运行结果如下

注意:从起始位置

  1. {m,n}:匹配m到n个,默认匹配最多次
text = '111-222-333'
text1 = '111-2^22-333'
result = re.match('[-\d]{2,8}', text)
result1 = re.match('[-\d]{2,8}', text1)
print(result.group())
print(result1.group())

运行结果如下

注意:若内容存在不属于规则的内容,则停止,直接输出

🍀匹配规则的代替

  1. \d------[0-9]:匹配所有的数字
text = '111-222-333'
result = re.match('[-0-9]*', text)
print(result.group())

运行结果如下

注意:这里经常与(*)进行搭配,进而匹配多次数字

  1. \D----[^0-9]:匹配所有的非数字
text = '111-222-333'
result = re.match('[^0-9]+', text)
print(result.group())

运行结果如下

注意:这里经常配合+(1次或多次),匹配1次或多次非数字字符;其实也可以配合*(0次或多次),匹配0次或多次非数字字符

  1. \w-----[0-9a-zA-Z_]:匹配所有数字、字母、下划线
text = '111-222-333'
result = re.match('[0-9a-zA-Z_]+', text)
print(result.group())

运行结果如下

注意:减号不在匹配范围之内

  1. \W-----[^0-9a-zA-Z]:匹配所有非数字、字母和下划线
text = '111-222-333'
result = re.match('[^0-9a-zA-Z_]+', text)
print(result.group())

运行结果如下

注意:这里和之前那个有相似之处,主要是因为+,这里的+是匹配至少一次,然而一开始检索就没找到,自然报错了

  1. [\d\D]、[\w\W]:匹配所有的字符
text = '111-222-333'
result = re.match('[\w\W]+', text)
print(result.group())

运行结果如下

所以说还是这个牛吧


🍀特殊的匹配

例子如下:

text = '111-222-333'
text1 = '....111-222-333'
result = re.match('[.]+', text)
result1 = re.match('.+', text)
result2= re.match('[.]+', text1)
print(result1.group())
print('*')
print(result2.group())
print('*')
print(result.group())

运行结果如下

注意:去掉中括号后,点表示所有字符再配上+匹配所有字符,但是中括号加上点后代表的就是匹配点了,然而text1并没有,所有遵循+的规则至少一个,所以报错

感兴趣的小伙伴可以自己试着来,将手机号、邮箱、身份证号码的规则自己写出来


🍀特殊的匹配plus

  1. 全局遍历
text = 'Hello HeWord'
result = re.search('He', text)
print(result.group())

运行结果如下

注意:search()是从左到右进行字符串遍历,找到就返回,若后续再出现,也不再返回结果

  1. $:以某某为结尾
text = 'HelloHeWord@163.com'
result = re.search('[\w]+@[a-z0-9]+[.]com$', text)
print(result.group())

运行结果如下

注意:以com为结尾提取数据,若不是以该词结尾就会报错

  1. |:匹配多个表达式或者字符串
text = 'https://www.baidu.com'
result = re.search('[https|http]',text)
print(result.group())

运行结果如下

text = 'https://www.baidu.com'
result = re.search('[https|http]+',text)
print(result.group())

运行结果如下

text = 'https://www.baidu.com'
result = re.search('(https|http)',text)
print(result.group())

运行结果如下

综上所述:中括号是将里面看成一个字符串,小括号则以|为标准分层若干字符串

🍀总结

本节介绍了多字符匹配,其中包括星号、加号等;匹配规则的代替,例如\d可以使用[0-9]代替使用;以及特殊的匹配。下节介绍贪婪模式与非贪婪模式,曾有大佬说明,不了解贪婪模式和非贪婪模式,就无法进行爬虫

如果没看过正则表达式详解:掌握强大的文本处理工具(二)的小伙伴,可以看看,感谢支持!!!

挑战与创造都是很痛苦的,但是很充实。


相关文章
|
1月前
|
测试技术 Perl
一个提高效率的工具,正则表达式,值得学习一下!
一个提高效率的工具,正则表达式,值得学习一下!
|
5月前
|
监控 Unix Linux
强大的文本处理工具组合:egrep、正则表达式、awk、cut、xargs
了解Linux和Unix文本处理的关键工具:egrep(扩展正则表达式搜索)、正则表达式、awk(文本分析)、cut(剪切文本)和xargs(传递参数给命令)。这些工具组合使用可高效处理、分析大量数据,尤其在日志分析和文本查询中。例如,从Web服务器日志中查找404错误,先用egrep筛选,再用awk或cut提取IP和URL,最后用xargs配合其他命令执行操作。掌握这些工具能提升工作效率。
|
28天前
|
自然语言处理 前端开发 JavaScript
掌握正则表达式:前端开发中的文本处理利器
在前端开发中,处理文本是一项常见的任务。正则表达式提供了一种强大而灵活的方式来匹配、搜索和替换文本。本文将带你深入了解正则表达式的基本概念、语法规则以及在JavaScript中的应用。通过一系列实例,我们将探索如何使用正则表达式来验证表单输入、提取文本信息以及进行复杂的文本替换。无论你是前端新手还是老手,掌握正则表达式都将极大地提升你的文本处理能力。
|
2月前
|
存储 数据处理 Python
Python中利用正则表达式进行文本处理
【9月更文挑战第24天】本文通过深入浅出的方式,介绍如何在Python中使用正则表达式进行文本处理。我们将从基础语法开始,逐步深入到复杂匹配模式的构建,最后通过实际案例展示正则表达式在文本分析中的高效应用。文章旨在帮助读者掌握正则表达式的使用技巧,提高数据处理效率。
|
3月前
|
Python
Python中利用正则表达式进行文本处理的实用指南
【8月更文挑战第31天】在编程的世界里,文本处理是日常工作的一部分。就像厨师用刀切菜一样,我们用正则表达式来切割、匹配和修改字符串。这篇文章将教你如何像大厨一样使用Python中的正则表达式库,让你的文本处理技能更上一层楼。
|
3月前
|
SQL 数据处理 数据库
SQL正则表达式应用:文本数据处理的强大工具——深入探讨数据验证、模式搜索、字符替换等核心功能及性能优化和兼容性问题
【8月更文挑战第31天】SQL正则表达式是数据库管理和应用开发中处理文本数据的强大工具,支持数据验证、模式搜索和字符替换等功能。本文通过问答形式介绍了其基本概念、使用方法及注意事项,帮助读者掌握这一重要技能,提升文本数据处理效率。尽管功能强大,但在不同数据库系统中可能存在兼容性问题,需谨慎使用以优化性能。
49 0
|
3月前
|
开发者 Ruby
Ruby正则表达式的奥秘:如何用简单的语法构建强大的文本匹配与处理工具?
【8月更文挑战第31天】正则表达式是文本匹配的强大工具,通过简单模式即可实现复杂文本处理。作为动态、面向对象的语言,Ruby提供了全面的正则表达式支持,涵盖创建、匹配、替换及分割等功能。本文通过示例代码介绍如何在Ruby中使用正则表达式进行文本匹配,并分享了编写正则表达式的最佳实践,帮助开发者提升文本处理效率与准确性,更好地利用这一工具构建高效系统。
32 0
|
6月前
|
机器学习/深度学习 Python
正则表达式(Regular Expression,常简写为regex或regexp)是一种强大的文本处理工具
【5月更文挑战第12天】正则表达式是文本处理工具,Python的re模块支持其使用。元字符如.、*、+、?等在正则表达式中具有特殊含义,用于指定匹配规则。示例中,通过正则表达式模式匹配字符串中的电子邮件地址,并使用re.findall()找出所有匹配项。
69 4
|
6月前
|
Rust 监控 安全
【专栏】`ripgrep`(rg)是Linux下快速、内存高效的文本搜索工具,用Rust编写,支持PCRE2正则表达式
【4月更文挑战第28天】`ripgrep`(rg)是Linux下快速、内存高效的文本搜索工具,用Rust编写,支持PCRE2正则表达式。相比`grep`,它在处理大文件和复杂模式时更具优势。安装`rg`可通过软件包管理器,如在Debian系系统中使用`sudo apt install ripgrep`。基本用法包括简单搜索、递归搜索、忽略大小写、显示行号等。高级功能包括固定字符串搜索、多文件匹配、并行搜索、排除选项和区域搜索。适用于日志分析、代码审查等场景,是提升工作效率的利器。
518 4
|
6月前
|
数据安全/隐私保护 Python
Python正则表达式:强大的文本处理工具
Python正则表达式:强大的文本处理工具
49 1