python re函数的常用方法

本文介绍了Python中正则表达式的使用方法,包括re模块的基本操作如match、search及sub函数的应用,并通过实例展示了如何利用正则表达式进行字符串处理。
部署运行你感兴趣的模型镜像

刚学习python的正则表达式我还是有点懵逼的,不过没关系,慢慢来,看到一个知识点就吃一个。


re.match(arg0,arg1,arg2).span() arg0:表达式 arg1:原始字符串 *arg2:flag即搜索的标志符号                           [其中span()方法是获取到数据在原字符串的位置]

re.search(arg0,arg1,arg2).span() arg0:表达式 arg1:原始字符串 *arg2:flag即搜索的标志符号                           [其中span()方法是获取到数据在原字符串的位置]

区别:

match搜索字符串开头如果不匹配表达式就返回None了。

而search会搜索整个字符串。



③re.sub(arg0,arg1,arg2,arg3,arg4) 五个参数看起来就有点懵逼:arg0:表达式 arg1:需要替换的字符串 arg2:原始字符串 *arg3:替换的次数(0代表全部) *arg4:flag标识符

例:

实例

#!/usr/bin/python# -*- coding: UTF-8 -*-
import re phone = "2004-959-559 # 这是一个国外电话号码"

# 删除字符串中的 Python注释
num = re.sub(r'#.*$', "", phone)
print "电话号码是: ", num

# 删除非数字(-)的字符串
num = re.sub(r'\D', "", phone)
print "电话号码是 : ", num


电话号码是:  2004-959-559 
电话号码是 :  2004959559


其中的参数少了几个?那是因为有可选的参数,带星号的为可选参数,其中r是表达式的声明 r'表达式'' ,也可以用 r'变量' 来达到动态的表达式。

.*经过我的测试意思是后面的字符 ,f.*意思是f后面的字符





您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### Python `re` 模块使用教程 #### 导入模块 为了在程序中使用正则表达式功能,需要先导入 `re` 模块。 ```python import re ``` #### 常用函数方法 ##### 编译正则表达式模式 通过调用 `re.compile()` 可以预先编译一个正则表达式模式,这有助于提高效率尤其是在多次重复使用的场景下[^2]。该函数接受两个参数: - **pattern**: 正则表达式的字符串表示形式。 - **flags**(可选): 修改正则行为的标志位,比如忽略大小写、多行匹配等。 示例如下: ```python pattern = r'\d+' # 匹配任意数量连续数字 compiled_pattern = re.compile(pattern) ``` ##### 查找所有匹配项 利用 `findall()` 方法可以从给定文本中找到所有符合条件的结果并作为列表返回。 ```python text = "The price is 100 dollars and the quantity is 5." matches = compiled_pattern.findall(text) print(matches) # 输出 ['100', '5'] ``` ##### 替换特定子串 借助 `sub()` 或者 `subn()` 来实现基于正则条件下的字符串替换操作。 ```python new_text = compiled_pattern.sub('number', text) print(new_text) # 将原句中的数字都替换成单词'number' ``` ##### 分割字符串 当希望按照某种规律切分字符串时,可以考虑使用 `split()` 函数。 ```python splitted_parts = compiled_pattern.split("room number 101, floor level 3") print(splitted_parts) # 结果取决于具体的正则规则设定 ``` #### 贪婪 vs 非贪婪模式 对于某些复杂的匹配需求来说,理解如何控制匹配长度非常重要。默认情况下,大多数量词都是“贪婪”的——尽可能多地消耗字符;而加上问号后缀 (`*?`, `+?`) 则变为非贪婪模式,即尽可能少地消费字符[^5]。 例如,在处理HTML标签解析的时候,这两种不同策略会产生截然不同的效果: ```python html_content = "<div><p>Example Text</p></div>" greedy_pattern = re.compile(r'<div>.*</div>', re.S) non_greedy_pattern = re.compile(r'<div>.*?</div>', re.S) print(greedy_pattern.findall(html_content)) # ['<div><p>Example Text</p></div>'] print(non_greedy_pattern.findall(html_content)) # ['<div><p>Example Text</p></div>'] ``` 尽管上述例子看起来两者结果相同,但在更复杂的情况下差异就会显现出来。 #### 性能优化建议 针对大数据集的操作,提前编译好所需的正则表达式能够显著提升运行速度和资源利用率[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值