热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python的re模块是自带的吗_Python正则re模块使用步骤及原理解析

python中使用正则表达式的步骤:1.导入re模块:importre2.初始化一个Regex对象:re.compile()3.刚刚创建的

python中使用正则表达式的步骤:

1.导入re模块:import re

2.初始化一个Regex对象:re.compile()

3.刚刚创建的Regex对象调用search方法进行匹配,返回要给March对象

4.刚刚的March对象调用group方法,展示匹配到的字符串

下面例子的知识点:

对正则表达式分组用:(),正则里的分组计数从1开始,不是从0,切记~~

group(数字):去对应的分组的值

groups():返回所有分组的元组形式

\d表示一个数字

regex_obj = re.compile(r'(\d\d\d)-(\d\d\d)-(\d\d\d\d)')

match_obj = regex_obj.search('我司电话:035-411-1234')

result1 = match_obj.group(1)

result2 = match_obj.group(2)

result3 = match_obj.group(3)

print(result1)

print(result2)

print(result3)

result4 = match_obj.group()

print(result4)

result5 = match_obj.groups()

print(result5)

执行结果:

035

411

1234

035-411-1234

('035', '411', '1234')

补充知识点:\w表示一个单词,\s表示一个空格

regex_obj = re.compile(r'(\d\w\d)-(\d\d\d)-(\d\d\d\d)')

match_obj = regex_obj.search('我司电话:0a5-411-1234')

result = match_obj.group(1)

print(result)

regex_obj = re.compile(r'(\d\w\d)-(\d\d\d)-(\d\d\d\d)')

match_obj = regex_obj.search('我司电话:0哈5-411-1234')

result = match_obj.group(1)

print(result)

regex_obj = re.compile(r'(\d\s\d)-(\d\d\d)-(\d\d\d\d)')

match_obj = regex_obj.search('我司电话:0 5-411-1234')

result = match_obj.group(1)

print(result)

执行结果:

0a5

0哈5

0 5

| 或:

regex_obj = re.compile(r'200|ok|successfully')

match_obj1 = regex_obj.search('vom get request and stored successfully')

result1 = match_obj1.group()

print(result1)

match_obj2 = regex_obj.search('vom get request,response 200 ok')

result2 = match_obj2.group()

print(result2)

match_obj3 = regex_obj.search('vom get request,response ok 200')

result3 = match_obj3.group()

print(result3)

执行结果:

successfully

200

ok

注意:如果search返回的March对象只有一个结果值的话,不能用groups,只能用group

regex_obj = re.compile(r'200|ok|successfully')

match_obj1 = regex_obj.search('vom get request and stored successfully')

result2 = match_obj1.groups()

print(result2)

result1 = match_obj1.group()

print(result1)

执行结果:

()

successfully

? :可选匹配项

+ :1次 或 n次 匹配

* :*前面的字符或者字符串匹配 0次、n次

注意:*前面必须要有内容

regex_obj = re.compile(r'(haha)*,welcome to vom_admin system') 指haha这个字符串匹配0次或者多次

regex_obj = re.compile(r'(ha*),welcome to vom_admin system') 指ha这个字符串匹配0次或者多次

. : 通配符,匹配任意一个字符

所以常常用的组合是:.*

regex_obj = re.compile(r'(.*),welcome to vom_admin system')

match_obj1 = regex_obj.search('Peter,welcome to vom_admin system')

name = match_obj1.group(1)

print(name)

执行结果:

Peter

{} : 匹配特定的次数

里面只写一个数字:匹配等于数字的次数

里面写{3,5}这样两个数字的,匹配3次 或 4次 或 5次,按贪心匹配法,能满足5次的就输出5次的,没有5次就4次,4次也没有才是3次

regex_obj = re.compile(r'((ha){3}),this is very funny')

match_obj1 = regex_obj.search('hahahaha,this is very funny')

print("{3}结果",match_obj1.group(1))

regex_obj = re.compile(r'((ha){3,5}),this is very funny')

match_obj1 = regex_obj.search('hahahaha,this is very funny')

print("{3,5}结果",match_obj1.group(1))

执行结果:

{3}结果 hahaha

{3,5}结果 hahahaha

findall():返回所有匹配到的字串的列表

regex_obj = re.compile(r'\d\d\d')

match_obj = regex_obj.findall('我是101班的,小李是103班的')

print(match_obj)

regex_obj = re.compile(r'(\d\d\d)-(\d\d\d)-(\d\d\d\d)')

match_obj = regex_obj.findall('我家电话是123-123-1234,我公司电话是890-890-7890')

print(match_obj)

打印结果:

['101', '103']

[('123', '123', '1234'), ('890', '890', '7890')]

[]:创建自己的字符集:

[abc]:包括[]内的字符

[^abc]:不包括[]内的所有字符

也可以使用:[a-zA-Z0-9]这样简写

regex_obj = re.compile(r'[!@#$%^&*()]')

name = input("请输入昵称,不含特殊字符:")

match_obj = regex_obj.search(name)

if match_obj:

print("昵称输入不合法,包含了特殊字符:", match_obj.group())

else:

print("昵称有效")

执行结果:

请输入昵称,不含特殊字符:*h

昵称输入不合法,包含了特殊字符: *

^:开头

$:结尾

regex_obj = re.compile(r'(^[A-Z])(.*)')

name = input("请输入昵称,开头必须大写字母:")

match_obj = regex_obj.search(name)

print(match_obj.group())

执行结果:

请输入昵称,开头必须大写字母:A1234

A1234

sub():第一个参数为要替换成的,第二个参数传被替换的,返回替换成功后的字符串

regex_obj = re.compile(r'[!@#$%^&*()]')

match_obj = regex_obj.sub('嘿','haha,$%^,hahah')

print(match_obj)

执行结果:

haha,嘿嘿嘿,hahah

补充一下正则表达式的表,正则太复杂了,要常看常用才能熟练

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。



推荐阅读
  • python模块之正则
    re模块可以读懂你写的正则表达式根据你写的表达式去执行任务用re去操作正则正则表达式使用一些规则来检测一些字符串是否符合个人要求,从一段字符串中找到符合要求的内容。在 ... [详细]
  • 问题场景用Java进行web开发过程当中,当遇到很多很多个字段的实体时,最苦恼的莫过于编辑字段的查看和修改界面,发现2个页面存在很多重复信息,能不能写一遍?有没有轮子用都不如自己造。解决方式笔者根据自 ... [详细]
  • Web动态服务器Python基本实现
    Web动态服务器Python基本实现 ... [详细]
  • 本打算教一步步实现koa-router,因为要解释的太多了,所以先简化成mini版本,从实现部分功能到阅读源码,希望能让你好理解一些。希望你之前有读过koa源码,没有的话,给你链接 ... [详细]
  • URL参数格式http:localhos:8080demo?ab&cd&ef匹配参数a对应的表达式为^a([^&]*)&匹配参数b对应的表达式为&b([^&]*)&匹配参数c对应 ... [详细]
  • java解析json转Map前段时间在做json报文处理的时候,写了一个针对不同格式json转map的处理工具方法,总结记录如下:1、单节点单层级、单节点多层级json转mapim ... [详细]
  • 本文介绍了Go语言中正则表达式的基本使用方法,并提供了一些实用的示例代码。 ... [详细]
  • 本文记录了 JavaScript 中正则表达式的使用方法和常见操作,包括匹配、替换、搜索等。 ... [详细]
  • Python内置模块详解:正则表达式re模块的应用与解析
    正则表达式是一种强大的文本处理工具,通过特定的字符序列来定义搜索模式。本文详细介绍了Python内置的`re`模块,探讨了其在字符串匹配、验证和提取中的应用。例如,可以通过正则表达式验证电子邮件地址、电话号码、QQ号、密码、URL和IP地址等。此外,文章还深入解析了`re`模块的各种函数和方法,提供了丰富的示例代码,帮助读者更好地理解和使用这一工具。 ... [详细]
  • 如何利用正则表达式(regexp)实现高效的模式匹配?本文探讨了正则表达式在编程中的应用,并分析了一个示例程序中存在的问题。通过具体的代码示例,指出该程序在定义和使用正则表达式时的不当之处,旨在帮助读者更好地理解和应用正则表达式技术。 ... [详细]
  • 利用Java开发功能完备的电话簿应用程序,支持添加、查询与删除操作
    本研究基于Java语言开发了一款功能全面的电话簿应用程序,实现了与数据库的高效连接。该应用不仅支持添加、查询和删除联系人信息,还具备输出最大和最小ID号的功能,并能够对用户输入的ID号进行有效性验证,确保数据的准确性和完整性。详细实现方法可参阅相关文档。 ... [详细]
  • 机器学习实践:逻辑回归与过拟合控制
    本文深入探讨了逻辑回归在机器学习中的应用,并详细解释了如何通过正则化等方法来有效避免模型的过拟合问题。 ... [详细]
  • Python正则表达式(Python RegEx)
    Python正则表达式快速参考常用函数:re.match():从字符串的起始位置匹配一个正则表达式。re.search():扫描整个字符串并返回第一个成功的匹配。re.s ... [详细]
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
  • 本文深入探讨了 Python Watchdog 库的使用方法和应用场景。通过详细的代码示例,展示了如何利用 Watchdog 监控文件系统的变化,包括文件的创建、修改和删除等操作。文章不仅介绍了 Watchdog 的基本功能,还探讨了其在实际项目中的高级应用,如日志监控和自动化任务触发。读者将能够全面了解 Watchdog 的工作原理及其在不同场景下的应用技巧。 ... [详细]
author-avatar
zJv老方有点坑爹额B
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有