Python常用的正则表达式处理函数详解_正则表达式

来源:脚本之家  责任编辑:小易  

Python本不等于正则语言,它只是内部集成了一个正则引擎,这个引擎实现了正则语言的功能,在Python中,这个引擎就是re模块。所以,你要先‘import re’。下面网页详细介绍了正则本身和re模块,可供参考,基本上覆盖了所有内容www.zgxue.com防采集请勿采集本网。

正则表达式是一个特殊的字符序列,用于简洁表达一组字符串特征,检查一个字符串是否与某种模式匹配,使用起来十分方便。

import re s='就行,很常用。表示只匹配一次。

在Python中,我们通过调用re库来使用re模块:

import re a='<div class=\"content\">' \\ '你大爷' \\ '</div>' x=re.findall('(.*)</div>',a) print x[0]

import re

Help on function match in module re: match(pattern,string,flags=0) Try to apply the pattern at the start of the string,returning a match object,or None if no match was found.Help on

正则表达式语法模式和操作符详见:https://www.runoob.com/python/python-reg-expressions.html#flags

正则表达式一个比较常见的用途是找到所有模式匹配的字符串并用不同的字符串来替换它们。sub方法提供一个替换值,可以是字符串或函数,和一个要被处理的字符串。1、这里的sub方法,是被编译成

下面介绍Python常用的正则表达式处理函数。

常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写。

re.match函数

re.match 函数从字符串的起始位置匹配正则表达式,返回match对象,如果不是起始位置匹配成功的话,match()就返回None。

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

pattern:匹配的正则表达式。

string:待匹配的字符串。

flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。具体参数为:

re.I:忽略大小写。

re.L:表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境。

re.M:多行模式。

re.S:即 . ,并且包括换行符在内的任意字符(. 不包括换行符)。

re.U:表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库。

re.X:为了增加可读性,忽略空格和 # 后面的注释。

import re#从起始位置匹配r1=re.match('abc','abcdefghi')print(r1)#不从起始位置匹配r2=re.match('def','abcdefghi')print(r2)

运行结果:

其中,span表示匹配成功的整个子串的索引。

使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。

group(num):匹配的整个表达式的字符串,group() 可以一次输入多个组号,这时它将返回一个包含那些组所对应值的元组。

groups():返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。

import res='This is a demo'r1=re.match(r'(.*) is (.*)',s)r2=re.match(r'(.*) is (.*?)',s)print(r1.group())print(r1.group(1))print(r1.group(2))print(r1.groups())print()print(r2.group())print(r2.group(1))print(r2.group(2))print(r2.groups())

运行结果:

上述代码中的(.*)和(.*?)表示正则表达式的贪婪匹配与非贪婪匹配,详情见此:https://www.zgxue.com/article/31491.htm

re.search函数

re.search函数扫描整个字符串并返回第一个成功的匹配,如果匹配成功则返回match对象,否则返回None。

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

pattern:匹配的正则表达式。

string:待匹配的字符串。

flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

import re#从起始位置匹配r1=re.search('abc','abcdefghi')print(r1)#不从起始位置匹配r2=re.search('def','abcdefghi')print(r2)

运行结果:

使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。

group(num=0):匹配的整个表达式的字符串,group() 可以一次输入多个组号,这时它将返回一个包含那些组所对应值的元组。

groups():返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。

import res='This is a demo'r1=re.search(r'(.*) is (.*)',s)r2=re.search(r'(.*) is (.*?)',s)print(r1.group())print(r1.group(1))print(r1.group(2))print(r1.groups())print()print(r2.group())print(r2.group(1))print(r2.group(2))print(r2.groups())

运行结果:

从上面不难发现re.match与re.search的区别:re.match只匹配字符串的起始位置,只要起始位置不符合正则表达式就匹配失败,而re.search是匹配整个字符串,直到找到一个匹配为止。

re.compile 函数

compile 函数用于编译正则表达式,生成一个正则表达式对象,供 match() 和 search() 这两个函数使用。

re.compile(pattern[, flags])

pattern:一个字符串形式的正则表达式。

flags:可选,表示匹配模式,比如忽略大小写,多行模式等。

import re#匹配数字r=re.compile(r'\d+') r1=r.match('This is a demo')r2=r.match('This is 111 and That is 222',0,27)r3=r.match('This is 111 and That is 222',8,27) print(r1)print(r2)print(r3)

运行结果:

findall函数

搜索字符串,以列表形式返回正则表达式匹配的所有子串,如果没有找到匹配的,则返回空列表。

需要注意的是,match 和 search 是匹配一次,而findall 匹配所有。

findall(string[, pos[, endpos]])

string:待匹配的字符串。

pos:可选参数,指定字符串的起始位置,默认为0。

endpos:可选参数,指定字符串的结束位置,默认为字符串的长度。

import re#匹配数字r=re.compile(r'\d+') r1=r.findall('This is a demo')r2=r.findall('This is 111 and That is 222',0,11)r3=r.findall('This is 111 and That is 222',0,27) print(r1)print(r2)print(r3)

运行结果:

re.finditer函数

和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。

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

pattern:匹配的正则表达式。

string:待匹配的字符串。

flags:标志位,用于控制正则表达式的匹配方式,如是否区分大小写,多行匹配等。

import re r=re.finditer(r'\d+','This is 111 and That is 222')for i in r: print (i.group())

运行结果:

re.split函数

将一个字符串按照正则表达式匹配的子串进行分割后,以列表形式返回。

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

pattern:匹配的正则表达式。

string:待匹配的字符串。

maxsplit:分割次数,maxsplit=1分割一次,默认为0,不限次数。

flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等。

import re r1=re.split('\W+','This is 111 and That is 222') r2=re.split('\W+','This is 111 and That is 222',maxsplit=1) r3=re.split('\d+','This is 111 and That is 222') r4=re.split('\d+','This is 111 and That is 222',maxsplit=1) print(r1)print(r2)print(r3)print(r4)

运行结果:

re.sub函数

re.sub函数用于替换字符串中的匹配项。

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

pattern:正则中的模式字符串。

repl:替换的字符串,也可为一个函数。

string:要被查找替换的原始字符串。

count:模式匹配后替换的最大次数,默认0表示替换所有的匹配。

import re r='This is 111 and That is 222'# 删除字符串中的数字r1=re.sub(r'\d+','',r)print(r1)# 删除非数字的字符串 r2=re.sub(r'\D','',r)print(r2)

运行结果:

参考资料:

https://www.runoob.com/python/python-reg-expressions.html#flags

到此这篇关于Python常用的正则表达式处理函数详解的文章就介绍到这了,更多相关python 正则表达式处理函数内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的部分。如果已经在其他语言里使用过正则表达式,只需要简单看一看就可以上手了。下图展示了使用正则表达式进行匹配的流程:正则表达式的大致匹配过程是:依次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。如果表达式中有量词或边界,这个过程会稍微有一些不同,但也是很好理解的,看下图中的示例以及自己多使用几次就能明白内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • 一文秒懂python正则表达式常用函数
  • python编程快速上手——strip()函数的正则表达式实现方法分析
  • 关于python正则表达式 findall函数问题详解
  • python使用正则表达式的search()函数实现指定位置搜索功能
  • python正则表达式re之compile函数解析
  • python正则表达式常用函数总结
  • python中正则表达式match()、search()函数及match()和search()的区别详解
  • php与javascript正则匹配中文的方法分析
  • 正则应用之 日期正则表达式
  • 正则表达式详述 二
  • 常用的正则表达式集锦
  • 正则表达式 应用四则
  • ubb代码转换为html
  • javascript正则表达式解析url的技巧
  • 如何删除文本框里的文字内容中段落之间多余的分行
  • 比较实用的正则表达式学习笔记
  • 正则表达式概述 什么是正则表达式 .
  • python 正则表达式高手在否
  • python 正则表达式怎么匹配
  • python 正则表达式 ——————这段儿啥意思啊。。?在线等!
  • python里用正则表达式匹配一行数据
  • python 如何用正则表达式取网址?
  • 怎么样用Python正则表达式提取中间内容?
  • python正则表达式函数match和search的区别详解
  • python 正则表达式re.sub函数替换内容的一个比较基础的问题
  • python怎样用正则表达式匹配不包含某些字符的字符串?
  • python正则表达式怎么写trpg的骰子?
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全javascriptasp.netphp编程ajax相关正则表达式asp编程jsp编程编程10000问css/htmlflex脚本加解密web2.0xml/rss网页编辑器相关技巧安全相关网页播放器其它综合dart首页正则表达式一文秒懂python正则表达式常用函数python编程快速上手——strip()函数的正则表达式实现方法分析关于python正则表达式 findall函数问题详解python使用正则表达式的search()函数实现指定位置搜索功能python正则表达式re之compile函数解析python正则表达式常用函数总结python中正则表达式match()、search()函数及match()和search()的区别详解php与javascript正则匹配中文的方法分析正则应用之 日期正则表达式正则表达式详述 二常用的正则表达式集锦正则表达式 应用四则ubb代码转换为htmljavascript正则表达式解析url的技巧如何删除文本框里的文字内容中段落之间多余的分行比较实用的正则表达式学习笔记正则表达式概述 什么是正则表达式 .java 正则表达式详解比较正宗的验证邮箱的正则表达式正则表达式匹配任意字符(包括换最新手机号码、电话号码正则表达javascript 手机号码正则表达式验js利用正则配合replace替换指定字正则表达式匹配不包含某些字符串正则中需要转义的特殊字符小结js正则函数match、exec、test、s最全的常用正则表达式大全——包vbs中的正则表达式的用法大全除捕获组的语法外,其它的(?...)语法都不php正则表达式完全教程之基础篇jscript中正则表达函数的说明与应用正则表达式之回溯javascript将字符串中的多个空格替换为一c# 正则表达式 使用介绍正则表达式的应用js正则表达式必须包含数字、字母、特殊字半小时精通正则表达式-精华版
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved