re正则表达式

re.match函数

re.match()是从字符串的起始位置开始匹配的,如果模式没有在字符串的开始位置找到,那么它会返回None

group()方法是匹配对象(Match object)的一个方法,它用于获取匹配的部分或全部内容

groups():返回一个包含所有分组匹配内容的元组(如果没有分组,返回一个空元组)

规则:
re.match(pattern,string,flags)
pattern:是匹配的规则内容
string: 要匹配的字符串
flag:   标志位(可选)控制正则表达式(pattern)的匹配方式
————————————————
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  
  
# 示例1:使用group()返回整个匹配的内容  
match = re.match(r"Hello (\w+)!", "Hello World!")  
if match:  
    print(match.group())  # 输出:Hello World!  
  
# 示例2:使用group(1)返回第一个括号内的匹配内容  
match = re.match(r"Hello (\w+)!", "Hello World!")  
if match:  
    print(match.group(1))  # 输出:World  
  
# 示例3:使用groups()返回所有分组匹配的内容  
match = re.match(r"Hello (\w+) (\w+)!", "Hello World Python!")  
if match:  
    print(match.groups())  # 输出:('World', 'Python')  
  
# 如果没有匹配,调用group()或group(n)会抛出AttributeError  
# 因此在调用之前应该检查匹配对象是否为None

正则匹配规则

匹配单个字符
字符功能
.匹配任意1个字符(除了\n)
[ ]匹配[ ]中列举的字符
\d匹配数字,即0-9
\D匹配⾮数字,即不是数字
\s匹配空⽩,即空格,tab键
\S匹配⾮空⽩字符
\w匹配单词字符,即a-z、A-Z、0-9、_
\W匹配⾮单词字符
匹配多个字符
字符功能表达式实例
*匹配前⼀个字符出现0次或者⽆限次,即可有可⽆abc*
+匹配前⼀个字符出现1次或者⽆限次,即⾄少有1次abc+
?匹配前⼀个字符出现1次或者0次,即要么有1次,要么没有abc?
{m}匹配前⼀个字符出现m次ab{2}c
{m,n}匹配前⼀个字符出现从m到n次,若省略m,则匹配0到n次,若省略n,则匹配m到无限次ab{1,2}c
匹配开头结尾
字符功能
^匹配字符串开头
$匹配字符串结尾
匹配分组
字符功能
|匹配左右任意⼀个表达式
(ab)将括号中字符作为⼀个分组
\num引⽤分组num匹配到的字符串
(?P<name>)分组起别名,匹配到的子串组在外部是通过定义的 name 来获取的
(?P=name)引⽤别名为name分组匹配到的字符串

re.compile 函数

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

re.compile(pattern, flags=0)

re.search函数

re.findall函数

re.finditer函数

pattern: 匹配的规则,
string : 要匹配的内容,
flags 标志位 这个是可选的,就是可以不写,可以写, 比如要忽略字符的大小写就可以使用标志位
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 为了增加可读性,忽略空格和 # 后面的注释

re.sub函数

sub是substitute的所写,表示替换;
参数描述
pattern必选,表示正则中的模式字符串
repl必选,就是replacement,要替换的字符串,也可为一个函数
string必选,被替换的那个string字符串
count可选参数,count 是要替换的最大次数,必须是非负整数。如果省略这个参数或设为 0,所有的匹配都会被替换
flag可选参数,标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

re.subn函数

 行为与sub()相同,但是返回一个元组 (字符串, 替换次数)。
import re
pattern = re.compile(r'(\w+) (\w+)')
s = 'i say, hello world!'
print(re.subn(pattern, r'\2 \1', s))
def func(m):
    return m.group(1).title() + ' ' + m.group(2).title()
print(re.subn(pattern, func, s))
### output ###
# ('say i, world hello!', 2)
# ('I Say, Hello World!', 2)

re.split函数

匹配进⾏切割字符串,并返回⼀个列表。

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

参数描述
pattern匹配的正则表达式
string要匹配的字符串
maxsplit分隔次数,maxsplit=1 分隔一次,默认为 0,不限制次数
贪婪和⾮贪婪
Python⾥数量词默认是贪婪的(在少数语⾔⾥也可能是默认⾮贪婪),总是尝试匹配尽可能多的字符;⾮贪婪则相反,总是尝试匹配尽可能少的字符。
---
Python⾥数量词默认是贪婪的(在少数语⾔⾥也可能是默认⾮贪婪),总是尝试匹配尽可能多的字符;⾮贪婪则相反,总是尝试匹配尽可能少的字符。
​
例如:正则表达式”ab*”如果用于查找”abbbc”,将找到”abbb”。而如果使用非贪婪的数量词”ab*?”,将找到”a”。
​
注:我们一般使用非贪婪模式来提取。
​
在"*","?","+","{m,n}"后⾯加上?,使贪婪变成⾮贪婪。
r的作用
在Python的`re`模块中,用于定义正则表达式字符串时,前缀`r`或`R`用于表示原始字符串(raw string)。
​
原始字符串不会处理反斜杠(`\`)作为转义字符。在普通的字符串中,`\`经常用于引入转义字符(例如`\n`代表换行符,`\t`代表制表符等)。但是,在正则表达式中,`\`也是一个特殊的字符,用于表示元字符(metacharacters),例如`\d`用于匹配任何数字。
  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值