Python正则表达式详解

目录

1.正则表达式简介

2. 正则表达式语法:

2-1 普通字符:

2-2 特殊字符:

2-3 数量限定

2-4 指定匹配位置:

2-5 贪婪非贪婪模式 

2-6 分组匹配 

3.Python正则表达式的使用

3-1 正则表达式对象

3-2 正则表达式对象的方法

3-2-1 Pattern.search(string,pos,endpos)

3-2-2 Pattern.match(string,pos,endpos)

3-2-3 Pattern.fullmatch(string,pos,endpos)

3-2-4 Pattern.findall(string,pos,endpos)

3-2-5 pattern.split(string, maxsplit=0)

3-2-6 pattern.sub(repl, string, count=0, flags=0)

 3-3 正则表达式对象属性:

3-3-1 pattern.flags

3-4 re模块自带的函数


1.正则表达式简介

-》regular expression简单翻译为”有规则的表达式“,即该表达式是一条规则,正则表达式引擎能够根据这条规则,在字符串中寻找所有符合规则的部分

-》正则表达式是一个特殊的字符序列,方便检查一个字符串是否与某种模式匹配

-》Python 自1.5版本起增加了re 模块(标准库),Python通过re模块提供对正则表达式的支持

2. 正则表达式语法:

2-1 普通字符:

#在字符串中查找匹配的子串 (普通字符子串)

import re

print(re.findall("hello","hahwiehellowordhahah"))  #['hello'], 查找子串'hello'

print(re.findall("hello","hahwiewordhahhah"))  #[]

print(re.findall("hello","hahwiehellowordhahhelloah")) #['hello', 'hello']

2-2 特殊字符:

正则表达式使用反斜线字符 \ 作为Escape(转义)符,让特殊字符失去含义

.匹配除换行符以外的任何单个字符

import re
print(re.findall("hellowo.d","hahwiehellowordhahah"))  #['helloword']

\d匹配非数字,相当于[0-9]

import re

print(re.findall("\d","aahhhjjj211hh1276833a")) #['2', '1', '1', '1', '2', '7', '6', '8', '3', '3'],找出数字

print(re.findall("\d\d","aahhhjjj211hh1276833a")) #['21', '12', '76', '83']

\D匹配数字,相当于[^0-9]

import re

print(re.findall("\D","aahhhjjj211hh1276833a")) #['a', 'a', 'h', 'h', 'h', 'j', 'j', 'j', 'h', 'h', 'a']

print(re.findall("\D\D","aahhhjjj211hh1276833a")) #['aa', 'hh', 'hj', 'jj', 'hh']

print(re.findall("\D\d","aahhhjjj211hh1276833a")) #['j2', 'h1']

[...] 匹配[]中的任意单个字符,[abc]匹配a或b或c

import re

print(re.findall("hel[abcd]oword","hahwiehelaowordhahah")) #['helaoword'] 

[^...]匹配不在[]中的单个字符

import re

print(re.findall("hel[^abc]oword","hahwiehelbowordhahah")) #[]

print(re.findall("hel[^abc]oword","hahwieheldowordhahah")) #['heldoword']

[-] 匹配指定字符范围中的单个字符

print(re.findall("hel[a-c]oword","hahwiehelbowordhahah")) #['helboword'] , 匹配a,b,c字符

注意:

如果要匹配反斜杠,需要输入正则表达式\\ (两个反斜杠)

如果要匹配两个反斜杠,需要输入正则表达式\\\\ (四个反斜杠)

在以 'r' 为前缀的字符串文字中不以任何特殊方式处理反斜杠

2-3 数量限定

字符 描述
X? 匹配前面的子表达式X零次或一次,要匹配 ? 字符使用 ​\?
X* 匹配前面的子表达式X零次或多次,要匹配 * 字符使用 ​\*
X+ 匹配前面的子表达式X一次或多次,要匹配 + 字符使用 ​\+
X{n} 匹配前面的子表达式X n次
X{n,} 匹配前面的子表达式X最少n次
X{n,m} 匹配前面的子表达式X最少n次,不超过m次

*控制前面的字符,匹配0到多个

import re

print(re.findall("hel*oword","hahwieheowordhahah")) #['heoword'], 匹配到0个l

print(re.findall("hel*oword","hahwiehelowordhahah")) #['heloword'], 匹配到1个l

print(re.findall("hel*oword","hahwiehellowordhahah")) #['helloword'], 匹配到两个l

+控制前面的字符,匹配1到多个

import re

print(re.findall("hel+oword","hahwieheowordhahah")) #[], 0个l匹配失败

print(re.findall("hel+oword","hahwiehelowordhahah")) #['heloword'], 匹配到1个l

print(re.findall("hel+oword","hahwiehellowordhahah")) #['helloword'], 匹配到两个l

?匹配前面的字符0到1个,有多个只匹配1个

  • 8
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 好的,我可以回答你关于Python正则表达式的问题。 Python正则表达式是一种用来匹配和处理字符串的工具。它可以在字符串中搜索和匹配特定的模式,以实现更高效和精确的数据处理。Python的re模块提供了完整的正则表达式支持,并且非常强大和灵活。 使用Python正则表达式,你可以实现各种字符串操作,比如搜索、替换、分割、提取等等。它的语法相对简单,但是功能非常强大,可以满足大部分的字符串处理需求。 在使用Python正则表达式时,你需要掌握一些基本的语法规则,比如元字符、字符集、重复、分组等等。这些语法规则可以组合在一起,形成复杂的匹配模式,以实现更加精细的字符串处理。 总之,Python正则表达式是一种非常有用的工具,可以大大提高字符串处理的效率和精确度。如果你想深入了解它的用法和技巧,可以查看Python官方文档中关于re模块的详细说明。 ### 回答2: Python正则表达式是一种强大的文本匹配和处理工具,通过使用特定的模式来识别和操作文本中的字符串。正则表达式通常被用于从文本中提取特定的信息、验证输入的有效性、进行替换或搜索等操作。 Python正则表达式的语法使用元字符和特殊字符来定义搜索模式,其中元字符用于描述字符类型或位置,特殊字符用于描述重复次数或匹配方式。常见的元字符包括"."(匹配任意字符)、"\d"(匹配数字字符)、"\w"(匹配字母、数字或下划线字符)、"\s"(匹配空白字符)等。特殊字符包括"*"(匹配前面的模式0次或多次)、"+"(匹配前面的模式1次或多次)、"?"(匹配前面的模式0次或1次),以及花括号{}(指定前面模式的重复次数)等。 使用Python正则表达式时,常见的操作包括匹配、搜索、替换和分割。匹配操作通过`re.match()`或`re.search()`函数实现,用于从字符串的起始位置或任意位置开始匹配;搜索操作通过`re.findall()`或`re.finditer()`函数实现,用于在整个字符串中搜索匹配的内容;替换操作通过`re.sub()`函数实现,用于替换匹配到的内容;分割操作通过`re.split()`函数实现,用于按指定的模式分割字符串。 Python正则表达式还支持分组、捕获、非捕获、反向引用等高级特性,可通过使用括号`()`进行分组,并使用`\number`的方式引用分组匹配到的内容。 总而言之,Python正则表达式提供了一套强大且灵活的工具来处理文本匹配和处理的需求。学习和熟练掌握正则表达式的使用,对于处理和分析文本数据将大有裨益。 ### 回答3: Python正则表达式是一种用来匹配字符串模式的工具。它使用一种特殊的语法来描述字符串的模式,然后通过与给定的字符串进行比较,判断是否匹配。 在Python中,我们使用re模块来使用正则表达式。首先,我们需要导入re模块,然后使用re模块提供的函数来进行匹配操作。 正则表达式中的一些基本概念包括: 1. 字符组:用方括号[]表示,表示匹配其中的任意一个字符。例如[abc]表示匹配字符a、b或c。 2. 量词:用来表示匹配多个字符的数量。例如*表示匹配0个或多个字符,+表示匹配1个或多个字符,?表示匹配0个或1个字符。 3. 元字符:具有特殊含义的字符,例如.表示匹配除换行符外的任意字符,\d表示匹配任意一个数字字符。 4. 转义字符:使用反斜杠\来转义元字符。例如\.表示匹配点字符。 5. 边界匹配:^表示匹配字符串的开头,$表示匹配字符串的结尾。 可以通过这些基本概念进行复杂模式的匹配。例如,使用re模块的match函数可以判断一个字符串是否以某个模式开头,使用search函数可以在字符串中搜索匹配某个模式的子串,使用findall函数可以找到所有匹配的子串。 除了基本概念外,Python正则表达式还提供了一些更高级的功能,例如分组、捕获和替换等。 总之,Python正则表达式是一种强大的工具,可以用于字符串的匹配和处理。掌握正则表达式的基本语法和常用函数,可以帮助我们更高效地处理字符串操作。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值