Python正则表达式学习心得及总结

本文总结了Python中re模块的关键方法,包括re.compile()、re.match()、re.search()、re.findall()、re.split()和re.sub()。通过这些方法,可以实现正则表达式的匹配、查找、分割和替换等功能。文章还提到了正则表达式的匹配模式,如忽略大小写、多行匹配等,并提供了实例来说明其用法。
部署运行你感兴趣的模型镜像

Python正则表达式学习心得及总结

re模块方法

1、re.compile(pattern, flags):创建模式对象

2、re.match((pattern, string, flags): 尝试从字符串string开始的位置匹配一个模式,如果在起始位置匹配成功,返回match对象,匹配不成功的,则返回None。

3、re.search(pattern, string, flags):扫描整个字符串string,如果成功,返回第一个成功匹配match对象,否则返回None。

4、re.findall(pattern, string, flags=0):扫描整个字符串string,并返回成功匹配结果列表。

其中以上4个方法参数值:
pattern:要匹配的正则表达式

string: 要匹配的字符串

flags标志位,用于控制正则的的匹配方式,主要分6种匹配方式:
re.I 忽略大小写
re.L 做本地化识别
re.M 多行匹配,影响^和%
re.S 匹配包含换行符的所有字符
re.U 根据Unicode字符集解析字符,影响\w \W \b \B
re.X 使我们以更灵活的方式理解正则

另外还有两个比较常用的方法:
5、re.split(pattern, string, maxsplit=0):根据模式匹配项分割字符串string,返回分割后的列表,其中maxsplit参数指定分割的最大次数。
6、re.sub(pat, repl, string):将字符串string中所有pat的匹配项,用repl替换。

例子展示:
可以先将模式编译,产生一个正则表达式对象,然后用正则表达式对象提供的方法进行字符串处理

text="Python is a free, open source, cross platform advanced dynamic programming language."
pattern=re.compile(r'\bp\w+\b',re.I)     #编译正则表达式对象,查找以p/P开头的单词
pattern.findall(text)
>>>['Python', 'platform', 'programming']
pattern.match(text)
>>><_sre.SRE_Match object; span=(0, 6), match='Python'>
pattern.search(text)
>>><_sre.SRE_Match object; span=(0, 6), match='Python'>

也可以不编译,直接采用re模块方法进行字符串处理:

text="Python is a free, open source, cross platform advanced dynamic programming language."
re.findall(r'\bp\w+\b',text,re.I)
>>>['Python', 'platform', 'programming']
re.match(r'\bp\w+\b',text,re.I)
>>><_sre.SRE_Match object; span=(0, 6), match='Python'>
m=re.match(r'(\w+)\s(\w+)\s(\w+)\s(\w+)',text)      #将match对象赋值给m
m.group(0)        #match对象的group(0)方法返回匹配的所有子模式的内容
>>>'Python is a free'
m.group(1). #返回第一个子模式内容
>>>'Python'
m.group(1,2,3).  #返回指定的多个子模式的内容
>>>('Python', 'is', 'a')
re.split(r'\,?\s?\.?',text)   #用任意空白字符或者‘,’或者'.'将字符串分割
>>>['Python', 'is', 'a','free','open','source','cross','platform',
 'advanced','dynamic','programming','language','']
 re.sub('r'\s'','*',text)     #用“*”替换空格
 >>>'Python*is*a*free,*open*source,*cross*platform*advanced*dynamic*programming*language.'

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### Python 正则表达式综合练习 对于希望深入理解和熟练掌握Python正则表达式的用户而言,存在多种资源可以提供帮助。Educoder平台提供了名为“【头歌系统Python实验】正则表达式入门”的课程模块,该模块旨在引导学生通过实际编程任务来熟悉正则表达式的使用[^1]。 在此特定案例中,为了实现既能匹配`python`又能匹配`Python`的需求,可以通过定义一个包含大小写字母p的字符集并将其余部分固定下来的方式构建模式。具体来说就是利用方括号内的两个选项[Pp]作为首字母的选择条件: ```python import re pattern = r'[Pp]ython' text = 'This is about python and Python programming.' matches = re.findall(pattern, text) for match in matches: print(match) ``` 这段代码展示了如何创建一个简单的程序去查找给定字符串中的目标单词实例,无论其开头字母是否大写都能成功识别。 另外,在处理电话号码格式化问题上,如需设计一条既可接受带分隔符也可不带分隔符的形式,则应考虑采用非捕获群组(?:...)以及量词?来表示可能出现一次也可能不存在的部分。针对“(010)-62661617”或“01062661617”,下面给出了一种可能适用的解决方案: ```regex ^(?:\(\d{3}\)|\d{3})[-]?\d{8}$ ``` 此正则表达式能够满足题目描述的要求,即完全匹配上述两种形式之一的电话号码[^2]。 #### 关于更广泛的练习与学习资料推荐 除了完成具体的编码挑战外,还建议探索更多关于正则表达式的理论知识及其应用场景的学习材料。这不仅限于在线教程、官方文档,还包括参与社区讨论和技术论坛交流经验心得等途径。实践证明,持续不断地接触不同类型的问题有助于加深理解并提高解决问题的能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值