视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Python基础篇之正则表达式
2020-11-27 14:24:26 责编:小采
文档


正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个的处理引擎,效率上可能不如str自带的方法,但功能十分强大。下面这篇文章主要介绍了关于Python正则表达式基础的相关资料,需要的朋友可以参考下。

前言

之前有人提了一个需求,我一看此需求用正则表达式最合适不过。考虑到之前每次使用正则表达式,都是临时抱佛脚,于是这次我就一边完成任务一边系统的学习了一遍正则表达式。主要参考PyCon2016上的一个视频Regular Expressions。

我将分几篇文章对正则表达式进行总结。

以下是第一部分,基础:

基础部分

这里总结了正则表达式最基础的用法,其中大部分内容对我(以及大部分程序员)来说都是平时经常用到的,所以我就一笔带过了,只对其中的几处用例子说明。

. 除了换行之外的其他所有字符

^ 行首

$ 行尾

[abcd] abcd其中的一个字符

[^abcd] 除了abcd之外的任意字符

[a-d] 相当于[abcd]

[a-dz] 相当于[abcdz]

 单词边界

w 字母数字或下划线 相当于[a-zA-Z0-9_]

W 与w相反

d 数字,相当于[0-9]

D 与d相反

s 空白字符,相当于[ fv]

S 与s相反

{5} 在此之前的正则表达式部分(下同)准确的出现5次

{2,5} ~出现2到5次

{2,} ~出现2次或多次

{,5} ~出现0到5次

* ~出现0次或多次

? ~出现0次或1次

+ ~出现1次或多次

ABC|DEF 匹配ABC或者DEF

转义字符,如表示匹配*,$表示匹配$*

、 用以下几个例子简单说明一下:

:

>>> re.search(r'hello', 'hello')
<_sre.SRE_Match object; span=(0, 5), match='hello'>
>>> re.search(r'hello', 'hello world')
<_sre.SRE_Match object; span=(0, 5), match='hello'>
>>> re.search(r'hello', 'hello,world')
<_sre.SRE_Match object; span=(0, 5), match='hello'>
>>> re.search(r'hello', 'hello_world') 
>>>

其实这里,大体上和W一支,但是可以匹配行首行尾等非显示类的字符,而W不可以。

:

>>> re.search(r'$100', '$100')
<_sre.SRE_Match object; span=(0, 4), match='$100'>
>>> re.search(r'$100', '$100') 
>>>

想要匹配那些在正则表达式中有特殊含义的字符,如$、^、*等,就需要用进行转义。

raw string:

另外,前面例子中,模式字符串(pattern)前面都加了一个r,这个r的意思是raw string,后面所接的字符串,Pyhton解释器无需对其进行转义。因为,在Python字符串中和正则表达式中都有特殊含义,所以如果不是raw string,那么要表达一个字符,就需要四个\了(在Python解释器中先转义一次,2个表示1个,剩下2个,在正则表达式中又转义一次,最终剩下一个\)。例如:

>>> re.search(r'hello', 'hello')
<_sre.SRE_Match object; span=(0, 5), match='hello'>
>>> re.search('hello', 'hello') 
>>> re.search('\bhello\b', 'hello')
<_sre.SRE_Match object; span=(0, 5), match='hello'>

>>> re.search('\\hello\\', '\hello\') 
<_sre.SRE_Match object; span=(0, 7), match='\hello\'>
>>> re.search(r'\hello\', '\hello\') 
<_sre.SRE_Match object; span=(0, 7), match='\hello\'>
>>> print('\hello\')
hello

【相关推荐】

1. Python免费视频教程

2. Python遇见数据采集视频教程

3. Python学习手册

下载本文
显示全文
专题