Python学习笔记模式匹配与正则表达式之用正则表达式匹配更多模式

  随笔记录方便自己和同路人查阅。

#------------------------------------------------我是可耻的分割线-------------------------------------------

  既然你已知道用 Python 创建和查找正则表达式对象的基本步骤,就可以尝试一些更强大的模式匹配功能了。

#------------------------------------------------我是可耻的分割线-------------------------------------------

  1、利用括号分组,示例代码:

1
2
3
4
5
6
7
#! python 3
# -*- coding:utf-8 -*-
# Autor: Li Rong Yang
import re#用 import re 导入正则表达式模块。
phoneNumregex = re.compile(r'(\d{3})-(\d{3}-\d{4})')#使用括号进行分组。
text = phoneNumregex.search('My number is 415-555-4242')#向 Regex 对象的 search()方法传入想查找的字符串。它返回一个 Match 对象。
print(text.group(1))#调用 Match 对象的 group()方法,返回分组1的内容。

  运行结果:

  2、用管道匹配多个分组,示例代码:

  字符|称为“管道”。希望匹配许多表达式中的一个时,就可以使用它。例如,正则表达式 r'Batman|Tina Fey'将匹配'Batman'或'Tina Fey'。

如果 Batman 和 Tina Fey 都出现在被查找的字符串中,第一次出现的匹配文本,将作为 Match 对象返回。

  3、用问号实现可选匹配,示例代码:

  有时候,想匹配的模式是可选的。就是说,不论这段文本在不在,正则表达式都会认为匹配。字符?表明它前面的分组在这个模式中是可选的。

   4、用星号匹配零次或多次,示例代码:

  *(称为星号)意味着“匹配零次或多次”,即星号之前的分组,可以在文本中出Python 编程快速上手——让繁琐工作自动化现任意次。它可以

完全不存在,或一次又一次地重复。

  对于'Batman',正则表达式的(wo)*部分匹配 wo 的零个实例。对于'Batwoman',(wo)*匹配 wo 的一个实例。对于'Batwowowowoman',(wo)*匹配

wo 的 4 个实例。

  如果需要匹配真正的星号字符,就在正则表达式的星号字符前加上倒斜杠,即\*。

  5、用加好匹配一次或多次,示例代码:

  *意味着“匹配零次或多次”,+(加号)则意味着“匹配一次或多次”。星号不要求分组出现在匹配的字符串中,但加号不同,加号前面的分组必须“至少

出现一次”。这不是可选的。

  正则表达式 Bat(wo)+man 不会匹配字符串'The Adventures of Batman',因为加号要求 wo 至少出现一次。
  如果需要匹配真正的加号字符,在加号前面加上倒斜杠实现转义:\+。

  6、用花括号匹配特定次数,示例代码:

  

1
2
3
4
5
6
7
8
9
10
11
12
#! python 3
# -*- coding:utf-8 -*-
# Autor: Li Rong Yang
import re#用 import re 导入正则表达式模块。
phoneNumregex = re.compile(r'(\d{3})-(\d{3}-\d{4})')#使用括号进行分组。
text = phoneNumregex.search('My number is 415-555-4242')#向 Regex 对象的 search()方法传入想查找的字符串。它返回一个 Match 对象。
print(text.group(1))#调用 Match 对象的 group()方法,返回分组1的内容。
 
 
phoneNumregex = re.compile(r'(\d\d\d)-(\d\d\d-\d\d\d\d)')#使用括号进行分组。
text = phoneNumregex.search('My number is 415-555-4242')#向 Regex 对象的 search()方法传入想查找的字符串。它返回一个 Match 对象。
print(text.group(1))#调用 Match 对象的 group()方法,返回分组1的内容。

  运行结果:

  根据结果可以看出,两段代码效果完全一致,花括号只是匹配相同内容的次数。

 

posted @   李荣洋  阅读(3098)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示