### Python 常用模块 re 使用方法详解 #### 一、re模块的查找方法 **1. findall:**此方法用于匹配所有符合指定模式的子串,并将它们作为一个列表返回。若没有找到匹配,则返回空列表。 ```python import re result = re.findall('\d+', 'asd鲁班七号21313') # 正则表达式, 待匹配的字符串, flag # result = re.findall('\d', 'asd鲁班七号21313') # 可以修改为查找单个数字 print(result) # 输出:['21313'] ``` **2. search:**此方法扫描整个字符串并返回第一个成功匹配的结果。如果没有找到匹配,则返回 None。可以通过 `group()` 方法获取匹配的字符串。 ```python import re result = re.search('\d+', 'asd鲁班七号21313') print(result) # 输出的是一个 Match 对象 print(result.group()) # 输出:'21313' # 如果没有匹配到任何内容,使用 group() 会抛出异常 result = re.search('\d+', 'asd鲁班七号') try: print(result.group()) except AttributeError as e: print("没有找到匹配的数字。") # 处理未找到匹配的情况 ``` 为了安全地访问匹配结果,可以先检查 `search` 是否返回了非空结果: ```python result = re.search('\d+', 'asd鲁班七号') if result: print(result.group()) # 安全地打印匹配结果 else: print("未找到匹配的数字。") ``` **3. match:**与 `search` 类似,但仅检查字符串的开始位置是否匹配给定的模式。 ```python import re result = re.match('\d+', '1233asd鲁班七号21313') print(result) # 输出匹配对象 ``` #### 二、字符串处理扩展 **1. split:**此方法用于根据正则表达式进行分割操作,返回分割后的字符串列表。默认情况下,匹配到的内容会被切掉。 ```python s = 'luban|cheng|an|' print(s.split('|')) # 输出:['luban', 'cheng', 'an', ''] s = 'luban34cheng21an89' print(re.split('\d+', s)) # 输出:['luban', 'cheng', 'an'] ``` **2. sub:**用于替换字符串中所有匹配正则表达式的部分。 ```python import re result = re.sub('\d+', 'H', 'luban34cheng21an89', 1) print(result) # 输出:'lubanHcheng21an89' # subn 返回替换后的字符串以及替换次数 result = re.subn('\d+', 'H', 'luban34cheng21an89') print(result) # 输出:('lubanHchengHan89', 2) ``` #### 三、re模块的进阶 **1. compile:**此方法用于预先编译正则表达式,以便后续重复使用时更加高效。 ```python import re regex = re.compile('\d+') print(regex) # 输出:<_sre.SRE_Pattern object at 0x7f4d75c47e10> # 使用已编译的正则表达式执行查找操作 results = regex.findall('luban34cheng21an89') print(results) # 输出:['34', '21', '89'] result = regex.search('1233asd鲁班七号21313') print(result.group()) # 输出:'1233' ``` **2. finditer:**此方法返回一个迭代器,其中包含所有匹配的结果。这有助于节省内存,特别是在处理大型数据集时。 ```python import re iterator = re.finditer('\d+', '1233asd鲁班七号21313') for item in iterator: print(item.group()) # 输出:'1233' 和 '21313' ``` #### 四、总结 - **findall:**返回一个列表,包含所有匹配项。 - **search:**返回一个 Match 对象(若找到匹配),可通过 `group()` 获取匹配结果;若未找到匹配,则返回 None。 - **match:**与 `search` 类似,但仅检查字符串的起始位置是否匹配。 - **split:**返回一个列表,按照正则表达式进行分割,默认情况下匹配到的内容会被切掉。 - **sub/subn:**用于替换,`subn` 还返回替换次数。 - **compile:**预先编译正则表达式,提高后续操作效率。 - **finditer:**返回一个迭代器,包含所有匹配结果,有助于节省内存。 以上内容详细介绍了 Python 中 `re` 模块的主要功能及其使用方法,希望对读者理解和掌握正则表达式在 Python 中的应用有所帮助。
- 粉丝: 1
- 资源: 944
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助