号外:《黑客攻防入门学习课程》现已推出,喜欢的朋友请关注!!!

Python3 RE正则表达式(2)— 常用函数

python 泰泰 1144℃ 0评论

【导读】

在上节中,讲了原子、元字符,以及如何使用这些来编写正则表达式,但有一个特点就是,写出来的表达式如果需要进行相应的内容匹配,就必须通过调用相应的函数(方法)来实现。

如果需要复习上节“元字符”等内容,可看文章:

编译正则表达式

正则表达式可分为”解释型”和”编译型”两种,在开发中,通常都会将正则进行编译处理,这样可以使得程序执行的速度更快,效率更高。

在Python 中,re 模块提供一个 compile()函数对正则表达式进行编译,下面演示编译后的正则使用:

实例输出:

<_sre.SRE_Match object; span=(5, 11), match=’python’>

分析:在上面可以看到,在第三行处对正则表达式进行了预先编译,并将其内容重新传递给了 “pattern” ,此时”pattern”继承了 re 的相关内容,所以在第四行中调用正则匹配内容时,使用”pattern”代替了原先的 “re”,函数中也不需要再传入正则表达式了,直接传入要匹配的”string”字符串即可!

RE中常用的方法(函数)

re 模块提供了一系列的函数(方法)共开发者使用,完整的列表可查阅 Python Library Reference,下面只介绍一些常用的函数。

方法:功能:
match()从起始位置开始匹配,内容存在则返回 MatchObject 实例,否则返回 None
search() 查找字符串中是否有 RE 匹配的内容,有则返回 SearchObject 实例,否则返回 None
findall()查找 RE 匹配的内容,并将其所有内容以列表形式返回
finditer()查找 RE 匹配的全部内容,并将其以 迭代器 形式返回
sub()根据正则,替换源字符串中的某些字符
spilt()根据正则,对源字符串进行切割

(正则表达式常见函数)

PS:使用这些方法的过程中,可以加入上节中讲到的“模式修正符”进行灵活运用。

match( ) 方法

功能:从源字符串的起始位置开始匹配,如果内容存在则返回内容,反则返回”None”。

语法格式:

re.match(pattern, string, flags=0)

pattern:传入需要匹配的正则表达式。

string:传入需要匹配的源字符串。

flags:标志位(可选参数),可传入“模式修正符”等信息。

实例如下:

实例输出:

<_sre.SRE_Match object; span=(0, 7), match=’Apython’>
None

分析:(略)

search( ) 方法

功能:在源字符串中进行全局检索匹配,如果源字符串中存在匹配的内容,返回 第一个 匹配的相关结果(即使有多个符合匹配的内容,也只是返回首个匹配的结果),反之,如果没有匹配的内容则返回 “None”。

语法格式:

re.search(pattern, string, flags=0)

实例演示:

(忽略,具体看前面的调用过程。)

findall()方法

功能:从字符串中检索出所有匹配的内容,并以字符串形式返回,反之返回一个空的列表。

语法格式:

re.findall(pattern, string, flags=0)

实例如下:

实例输出:

[‘python2’, ‘python3’]

分析:(略)

finditer( ) 方法

功能:与”findall()”方法类似,同样是全局检索匹配,不一样的是”finditer( )”返回的是一个迭代器,而”findall( )”返回的是一个列表。

语法格式:

re.finditer(pattern, string, flags=0)

实例如下:

实例输出:

python2
python3
python4

分析:检索到的结果,返回的是一个迭代器,通过for循环且结合”group()”方法遍历出每一个值。

sub( )方法

功能:根据需求替换源字符串中指定的内容,可以是全部,也可是指定替换个数。

语法格式:

re.sub(pattern, repl, string, count=0, flags=0)

pattern:传入需要匹配的正则表达式。

repl:替换后的字符串

string:传入需要匹配的源字符串。

count:指定替换的个数

flags:标志位(可选参数),可传入“模式修正符”等信息。

实例如下:

实例输出:

ABCjavaDEFjavaGHIjava567
ABCjavaDEFjavaGHIpython4567

分析:(略)

split( ) 方法

功能:根据正则将源字符串进行切割,可全局切割或指定切割次数,最终以列表形式返回。

语法格式:

re.split(pattern, string, maxsplit=0, flags=0)

pattern:传入需要匹配的正则表达式。

string:传入需要匹配的源字符串。

maxsplit:指定最大的切割次数

flags:标志位(可选参数),可传入“模式修正符”等信息。

实例输出:

实例输出:

[‘ABC’, ‘2DEF’, ‘3GHI’, ‘4567’]
[‘ABC’, ‘2DEF’, ‘3GHIpython4567’]

各Object 实例输出的方法

在常用函数调用过程中,有部分函数输出的是并非是匹配的最终内容,而是输出了一个对象信息,如:<_sre.SRE_Match object; span=(0, 7), match=’Apython’>

类似的函数有:match()、search()…,下面就来讲讲如何通过对象,输出其匹配的内容。

方法:功能:
group()返回 RE 匹配的字符串值
start()返回 匹配开始的位置
end()返回 匹配结束的位置
span()以元组形式返回 匹配( 开始,结束 ) 的位置

(常见Object输出方法)

通过以上方法,可以实现取值、取字符位子等信息。

实例如下:

输出结果:

python2
(3, 10)
3
10

更多学习教程请访问:Python3 学习教程目录索引

转载请注明:泰泰博客 » Python3 RE正则表达式(2)— 常用函数

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址(选填)