python re正则表达式基本使用介绍

简介:

何为正则表达式?

     正则表达式为高级的文本模式匹配、抽取、与/或文本形式的搜索和替换功能提供了基础。

简单来说,正则表达式(Regular Expression,简称regex)是一些由字符和特殊符号组成的字符串,它们描述了模式的重复或者表述多个字符,正则表达式能按照某种模式匹配一系列有相似特征的字符串。


python re模块提供正则功能

以下是一些基本使用:

#正则表达式元字符

1)  .  (通配符)除了换行符外均可代指

1
2
#ret = re.findall('w..l',s)
#print ret

2) ^ 开始匹配(从开头开始匹配)

1
2
#ret = re.findall('^h...o','hejaodflhello')
#print(ret)

3) $ 从结尾匹配

1
2
# ret = re.findall('a..x$','afjdlajfa faf alox')
# print ret

4) *  重复匹配(*前字符[0 正无穷多])

1
2
# ret = re.findall('ab*','falfa;ldfafbaalexlil')
# print(ret)

5) +  匹配重复[1, 无穷多]

1
2
3
4
# ret = re.findall('ab+','falfa;ldfabfbaabbleab2xlil')
# print(ret)
# ret = re.findall('a+b','falfa;ldfabfbaabbleab2xla2bil')
# print ret

6) ?  [0,1] 次

1
2
# ret = re.findall('a?b','falfa;ldfabfbaabblea3b2xlil')
# print ret

7) { } 指定前面字符出现的次数

1
2
3
4
# ret = re.findall('a{5}b',"abxkaaaaab,abbbbbaaabblfjdasssssbwl")
# print ret
# ret = re.findall('a{1,3}b',"abxkaaab,abbbbbabblfjdaabwl")
# print ret

8) 字符集及范围匹配 [ ]

#或关系选取

1
2
# ret = re.findall('a[c,d]x','acxbaadx')
# print ret

范围选取

[0-9] 等同于\d   匹配任何十进制数字 \D与之相反匹配任何非数值型的数字

[a-z] 匹配小与字母

[A-Z]匹配大写字母

[a-zA-Z0-9] 等同于 \w 匹配任何字母数字和字符   \W与之相反

\s 匹配任何空格字符 等同于[\n\t\r\v\f]    \S 与之相反



1
2
# ret = re.findall('[a-z]','abcdef')
# print ret

#[ ]取消元字符的特殊功能有三例除外(\ ^  -)

1
2
3
4
5
6
# ret = re.findall('[w,*,.,,]','wa,x.dx*')
# print ret
#取数字大小写字母
# ret = re.findall('[0-9a-zA-Z]','123tsAD') 
# print ret
#结果:['1', '2', '3', 't', 's', 'A', 'D']

总结:
*  等同于 {0,无穷多}    也等价于  {0,}
+ 等价于 {1,无穷}  也等价于  {1,}
?  等价于 {0,1}


取反

1
2
3
4
5
# ret = re.findall('^t','t12iu3tsAD')   #正常的取t开头的字符t
# print ret
# ret = re.findall('[^t,3]','t12iu3tsAD')    #取除t或3外的字符
# print ret
#结果: ['1', '2', 'i', 'u', 's', 'A', 'D']

 \ 反斜杠功能
#功能有二:
#反斜杠后边跟随元字符去除特殊功能
#反斜杠后跟部分普通字符实现特殊功能


#\b  匹配边界 任何特殊字符边界

1
2
3
4
# print(re.findall(r'I\b','Hello,I am a LI$sT.I,'))
#结果:['I', 'I', 'I']
# print(re.findall(r'\bI','Hello Iam a LI$sTI,'))
#结果: ['I']

re的常用方法

1、re.match方法

只在字符串开始匹配,也返回匹配到的第一个对象,匹配到返回

否则返回None

1
2
3
obj  =  re. compile ( "\.com" )
ret  =  obj.match("
print  ret   #结果None


2、re.search方法与re.findall
#re.search()  符合第一个条件的,返回对象,并通过group方法获取匹配到的结果

#re.findall() 把所有符合的结果放入列表 中。

1
2
3
4
# ret = re.search('(?P<id>\d{3})/(?P<name>\w{3})','weeew34tttt123/pppp')
# print(ret.group())  #结果:123/ppp
# print(ret.group('id'))   #结果:123
# print(ret.group('name'))  #结果 ppp
1
2
#ret = re.findall('(?P<id>\d{3})/(?P<name>\w{3})','weeew34tttt123/pppp')# print ret 
#结果是所符合的存在于列表中:[('123', 'ppp')]

3、re.compile 先编译成匹配对象可以供其他方法多次调用

1
2
3
obj  =  re. compile ( '\.com' )ret  =  obj.findall( "www.baidu.com,https://www.google.com.cn" ) print  ret    #结果['.com', '.com']
ret  =  obj.search(www.baidu.com,https: / / www.google.com.cn).group()
print  ret    #结果.com

本文只是简单说明了正则表达式的基本应用。更多扩展用法请参考这里。https://deerchao.net/tutorials/regex/regex.htm










本文转自 dyc2005 51CTO博客,原文链接:http://blog.51cto.com/dyc2005/1981625,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
Python
在Python中,可以使用内置的`re`模块来处理正则表达式
在Python中,可以使用内置的`re`模块来处理正则表达式
53 5
|
1月前
|
数据采集 Web App开发 iOS开发
如何使用 Python 语言的正则表达式进行网页数据的爬取?
使用 Python 进行网页数据爬取的步骤包括:1. 安装必要库(requests、re、bs4);2. 发送 HTTP 请求获取网页内容;3. 使用正则表达式提取数据;4. 数据清洗和处理;5. 循环遍历多个页面。通过这些步骤,可以高效地从网页中提取所需信息。
|
2月前
|
Python
Python 中常用的内置模块之`re`模块
【10月更文挑战第11天】 `re` 模块是 Python 内置的正则表达式处理工具,支持模式匹配、搜索、替换等功能。通过 `search`、`match`、`findall` 和 `sub` 等函数,结合正则表达式的元字符、分组、贪婪模式等特性,可高效完成文本处理任务。示例代码展示了基本用法,帮助快速上手。
37 1
|
2月前
|
Python
【收藏备用】Python正则表达式的7个实用技巧
【收藏备用】Python正则表达式的7个实用技巧
33 1
|
2月前
|
数据安全/隐私保护 Python
Python实用正则表达式归纳
Python实用正则表达式归纳
20 3
|
2月前
|
Python
Python 正则表达式高级应用指南
正则表达式是文本模式匹配的强大工具,Python 的 `re` 模块支持其操作。本文介绍正则表达式的高级应用,包括复杂模式匹配(如邮箱、电话号码)、分组与提取、替换操作、多行匹配以及贪婪与非贪婪模式的区别。通过示例代码展示了如何灵活运用这些技巧解决实际问题。
33 7
|
2月前
|
JavaScript 前端开发 Scala
Python学习十:正则表达式
这篇文章是关于Python中正则表达式的使用,包括re模块的函数、特殊字符、匹配模式以及贪婪与非贪婪模式的详细介绍。
22 0
|
2月前
|
数据采集 开发者 Python
Python正则表达式之re.compile函数
`re.compile`是Python正则表达式处理中一个强大的工具,它通过预先编译正则表达式,不仅提升了执行效率,还增强了代码的组织性和可读性。掌握其使用,对于涉及文本分析、数据清洗、日志处理等领域的Python开发者来说,是非常必要的技能。正确并高效地应用这一功能,可以显著提升程序的性能和维护性。
150 0
|
3月前
|
索引 Python
30天拿下Python之正则表达式
30天拿下Python之正则表达式
21 0
|
6月前
|
数据库 Python
Python网络数据抓取(8):正则表达式
Python网络数据抓取(8):正则表达式
66 2