python之Match对象

RegexObject 对象由re.compile() 返回
Match对象由match(),search(),findall()返回
Match 对象的方法

group()用于获得某个匹配组的字符串,默认为0,返回所有组的匹配结果
groups()返回匹配的所有组组成的元组
start()用于获取分组匹配的子串在整个字符串中的起始索引
end()用于获取分组匹配的子串在整个字符串中的结束索引
span()返回 (start(), end())这个的元组
Python中的`match`语句是在Python 3.10及以上版本引入的,它接受一个表达式,并将其值与作为一个或多个`case`块给出的连续模式进行比较,表面上类似于C、Java或JavaScript中的`switch`语句,但更类似于Rust或Haskell等语言中的模式匹配。只有第一个匹配的模式才会被执行,它还能将值中的组件(序列元素或对象属性)提取到变量中 [^4]。 `match`语句具备多种功能和特性。它支持析构,这是一种高级的拆包形式,可用于析构嵌套元组。例如,对于包含城市景点信息的嵌套元组列表,可使用`match`语句进行匹配筛选,仅当匹配模式且卫语句为真时才进行后续操作 [^1]。 `match`语句的匹配模式丰富多样。可以匹配空列表、指定长度和开头元素的列表、以特定元素结尾的列表,还能根据元素的属性(如奇偶性)进行匹配等。例如,匹配以奇数结尾的列表并提取第一个元素 [^2]。 通过实现`__match__`方法能够自定义匹配逻辑。比如定义一个`CustomMatcher`类,根据传入的模式返回不同结果 [^3]。 在应用示例方面,`match`语句可用于HTTP响应处理,根据不同的状态码执行不同操作;还能用于数学表达式解析,根据不同的表达式形式进行计算 [^3]。 不过,使用`match`语句也有一些注意事项。模式中的变量会覆盖当前作用域同名变量;匹配的序列必须是严格序列类型(tuple/list);复杂嵌套模式的匹配成本可能较高;且仅支持Python 3.10+版本 [^3]。 以下是一些简单示例代码: ```python # 简单的字面值匹配 def http_error(status): match status: case 400: return "Bad request" case 404: return "Not found" case 418: return "I'm a teapot" case _: return "Something's wrong with the internet" # 序列匹配 lst = [1, 21, 3, 43, 6, 100, 99] match lst: case []: print("我是一个空列表") case [1, a]: print("-----------", a) case [a, _, c]: print(a, c) case [*prefix, 100]: print("我是一个 以 100结尾的列表, prefix是", prefix) case [first, *_, last] if last % 2 == 1: print("我是一个以奇数结尾的列表、且第一个元素是:", first) case _: print("其他列表") ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值