Python正则表达式快速学习
2021/4/16 12:28:36
本文主要是介绍Python正则表达式快速学习,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
正则表达式(regular expression),简称regex或者re,表示高级文本模式匹配,是文本处理重要的方式,常用来进行字符串的检索、替换等。最开始在unix文本编辑器中使用,现在几乎各种高级编程语言都支持正则表达式。
在python中,可以使用内置模块re来使用正则表达式。
正则表达式的常用符号
匹配单个字符
匹配多个字符
其他匹配
re模块使用
python 的 re 模块提供了很多匹配方法,可以根据不同场景实现字符串的正则提取。
函数 | 描述 | 返回值 |
---|---|---|
match(pattern, string, flags=0) | 使用带有可选标记的正则表达式模式匹配字符串 | 匹配成功,返回匹配对象;如果失败,返回None |
search(pattern, string, flags=0) | 使用可选标记搜索字符串中第一次出现的正则表达式模式 | 匹配成功,返回匹配对象;如果失败,返回None |
findall(pattern, string[, flags]) | 查找字符串中所有(非重复)出现的正则表达式模式 | 匹配列表 |
finditer(pattern, string[, flags]) | 与findall 相同,但返回的不是列表 | 一个迭代器 |
split(pattern, string,max=0 ) | 根据正则表达式的模式分隔符,split函数将字符串分割为列表,然后返回成功匹配的列表,分割最多操作max 次,默认分割所有匹配成功的位置 | 分割后的列表 |
sub(pattern, repl, string, count=0) | 使用repl 替换count次正则表达式的模式在字符串中出现的位置;默认替换所有 | 替换操作数目 |
purge() | 清除隐式编译的正则表达式模式;清除缓存 |
1.match 从字符串的第一个字符开始匹配,如果未匹配到返回None,匹配到则返回一个对象
a = 'A83C72D1D8E67' r = re.match('A83',a) print(r) #返回对象所在位置 print(r.group()) #使用group方法来提取数据 print(r.span())# 返回一个元组表示匹配位置(开始,结束) 输出 <re.Match object; span=(0, 3), match='A83'> A83 (0, 3)
2.re.compile是将正则表达式转换为模式对象,提升匹配效率。使用compile转换一次之后,以后每次使用模式时就不用进行转换。
compile(pattern, flags=0) pattern:写正则表达式 flags:匹配模式
可以看出返回的是一个匹配对象,它单独使用就没有任何意义,需要和findall(), search(), match()搭配使用。
res = re.compile('\w+') res2 = res.search('*##abcd123_ABC####123').group()#Search与match类似,只是搜索整个字符串然后第一个匹配到指定的字符则返回值,未匹配到则返回None。 print(res2) 输出 abcd123_ABC
3.findall是匹配出字符串中所有跟指定值有关的值,并且以列表的形式返回,未匹配到则返回一个空的列表。
res = re.findall('ab+','abcdabddac') print(res) 输出 ['ab', 'ab']
4.re.split(pattern, string[, maxsplit=0, flags=0]):根据匹配进行切割字符串,并返回一个列表。
res = re.split('\W','123#abc#') print(res) 输出 ['123', 'abc', '']
5.字符串替换re.sub
import re a = 'abcABC' r = re.sub('abc','ABC',a) print(r)
贪婪与非贪婪
Python里数量词默认是贪婪的,总是尝试匹配尽可能多的字符;
非贪婪操作符“?”,用在"*","+","?"的后面,要求正则匹配的越少越好。
res = re.findall('(p.+)','pythonpythonpython') print(res) 输出 ['pythonpythonpython'] res = re.findall('(p.+?)','pythonpythonpython') print(res) 输出 ['py', 'py', 'py']
正则匹配总写一个r是什么意思?
Python中字符串前面加上r,r表示raw的简及raw string意思是原生字符,也就是说是这个字符串中间的特殊字符不用转义。比如你要表示‘\n’,可以这样:
r'\n'
大家需要注意,正则表达式不需要刻意记住,常用的正则表达式,可以到网上搜索获取,当然,一般优先考虑使用内置方法实现匹配,然后再考虑正则。
往期推荐
这篇关于Python正则表达式快速学习的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-27使用python 将ETH账户的资产打散
- 2024-09-26Python编程基础
- 2024-09-2610 种方法写出更好的 Python 代码
- 2024-09-25Python编程基础详解
- 2024-09-25Python编程入门教程
- 2024-09-25从零开始使用Python构建LLaMA 3
- 2024-09-23Python中理解和使用树形结构的简单教程
- 2024-09-23Python 编程基础入门
- 2024-09-18初探Python股票自动化交易:入门指南
- 2024-09-18Python量化入门:轻松掌握量化分析基础与实战