Python编程—正则表达式基础知识

  • 正则表达式:简称regex,故在Python中通过re模块来支持正则表达式,它可以用来进行模式匹配、提取、查找和替换。通俗来讲,就是用特殊字符的组合来搜索匹配目标文本的一种表达式,在Python中我们可以用来提取目标文件,如爬虫时提取自己想要的文字信息。

1、常用正则表达式符号

了解正则表达式的定义之后,接下来就是利用正则表达的这些特殊符合和字符(又称元字符)来提取我们想要的信息了,下面以表格的形式列出常用的特殊字符的表示意义,并通过示例直观的了解其含义;

常见的正则表达式符号和字符
字符表示描述正则表达式模式串     匹配的字符串备注
literal直接匹配字面字符串literalqwer               qwer字面意思直接匹配
re1|re2匹配正则表达式re1或者re2apple|orange  at、orange择一匹配,|就是常见的“或”d的意思
.匹配任何单个字符(除/n外)gr.stgrast、grbst、gr*st、.可以匹配除"/n"之外的任何字符。
^匹配字符串起始部分^totop、tolert匹配任何以to开头的字符串

$

匹配字符串终止部分com$baidu.com 、Sogou.com匹配任何以com结尾的字符串
*匹配0次或多次其前字符   
+匹配1次或多次其前字符   
匹配0次或1次其前字符   
{N}匹配N次其前的字符   
{M,N}匹配M~N次其前的表达式   
[ ]匹配[ ]里面的任何单个字符y[opd]oyoo、ypo、ydo用于匹配[ ]特定的字符(或 的关系)

注:若想显示匹配句点(.)和其它一些本意的字符($)怎么办呢?   使用反斜线转义字符,例如匹配.  则使用\.可以显示匹配.

原始字符:r    例如\b这类已经有个\了,\b表示ASCII字符的退格符,同时也是正则表达式的单词边界,当然我们可以使用\,但是有人觉得\\bText,实在是不好看,就规定说用r来表示吧,表示为r'\bText'。

还有一些简单的特殊字符的表示例如\d,\w,\s,\b,\c等这些特殊字符表示方法。也有一些扩展的表示方法,这些都是用方括号()括着的,进行指定分组的匹配,这里不在一一列举,在任何Python教材基本都能查询这些表示方法,记住一些常见的特殊组合就行。

 

2、限定范围和否定表达式

首先了解一下搜索和匹配的不同

搜索:在字符串中的任意部分中进行搜索匹配

匹配:判断一个字符能否从起始处全部或者部分的匹配某个模式。

连字符(-):指定的字符范围,如A-Z、a-z或者0-9分别表示大写字母、小写字母和数值数字。

脱字符(^):如果它紧跟在左方括号后面,表示为不匹配给定字符集中的任何一个字符。

限定范围和否定
正则表达式模式匹配的字符串备注
m.[0-9]字母m后面跟着任何一个字符,然后跟着一个数字 
[^aeiou]匹配一个非元音字符 
[^\t\n]不匹配制表符或者/n 
["-a]在ASCII系统中,所有字符位于“ ”和“a”之间即在34-97之间

对于匹配的次数我们需要了解一下什么是贪婪匹配;

贪婪匹配:顾名思义,贪婪的匹配所有符合的字符串,

非贪婪模式:使用问号(?)去贪婪,匹配尽可能少的字符,尽可能留下多的字符给后面的模式(如果存在)。

3、正则表达式与Python

Python语言通过re模块支持正则表达式。下面我们就以通俗的语言介绍一下re模块的一些核心函数和方法,当然具体使用方法可以参考官方文档;

常见的正则表达式属性
函数/方法描述备注
compile(patter,flags=0)编译正则表达式,返回一个正则表达式对象。 
match(patter,string,flags=0)从起始位置开始匹配成功的话,返回匹配对象
search(patter,string,flags=0)搜索字符串中包含的要匹配的字符串 
findall(patter,string,[.flags])查询全部的非重复情况返回一个列表,包含所有的成功匹配的部分
finditer(patter,string,[.flags]) 在匹配对象中迭代
spilt(patter,string,max=0)分割字符串返回分割后的列表
re模块函数和正则表达式对象方法
sub(patter,repl,string,count=0)搜索和替换subn()还返回了一个替换的总数
purge()  
常用的匹配对象方法
group(num=0)返回整个匹配对象,或特定子组

输出匹配成功的字符串

\n,n表示分组编号,可以转换顺序。

groups(default=None) 返回一个元组

获取所有匹配成功的子组

无子组则返回为空

groupdict(default=None)  
常用的模块属性
re.I不区分大小写 
re.L  
re.M  
re.S  
re.X  
扩展符号
(?:)进行分组但不保存 
   

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值