正则表达式(regex 或 regexp)是用于字符串模式匹配的强大工具。Python 的re
模块提供了强大的正则表达式操作功能,其中通配符起着至关重要的作用。本文探讨了如何有效地将通配符与re.sub()
函数一起用于各种字符串操作任务。
目录
使用通配符的基本正则表达式替换
re.sub()
函数是正则表达式替换的基础。其语法为re.sub(pattern, replacement, string, count=0, flags=0)
。pattern
是正则表达式,replacement
是替换字符串,string
是输入,count
限制替换次数,flags
修改匹配行为。通配符极大地增强了pattern
的灵活性。
让我们将字符串中的所有元音替换为“X”:
import re
text = "Hello, World!"
replaced_text = re.sub(r"[aeiou]", "X", text, flags=re.IGNORECASE)
print(f"Original: {text}")
print(f"Replaced: {replaced_text}")
[aeiou]
是一个通配符字符集,匹配任何元音(由于re.IGNORECASE
,不区分大小写)。
高级通配符用法和限定符
re.sub()
支持复杂的通配符。让我们将一个或多个数字的序列替换为“NUMBER”:
import re
text = "My phone number is 123-456-7890 and my zip code is 90210."
replaced_text = re.sub(r"d+", "NUMBER", text)
print(f"Original: {text}")
print(f"Replaced: {replaced_text}")
d+
匹配一个或多个数字(d
匹配一个数字,+
表示一个或多个重复)。
这是一个总结关键通配符的表格:
通配符 | 描述 |
---|---|
. |
匹配除换行符之外的任何字符。 |
* |
匹配前面元素零次或多次出现。 |
+ |
匹配前面元素一次或多次出现。 |
? |
匹配前面元素零次或一次出现。 |
[] |
定义字符集(例如,[abc] )。 |
[^] |
定义否定字符集(例如,[^abc] )。 |
() |
创建一个捕获组。 |
|
转义特殊字符(例如,. 匹配字面意义上的点)。 |
组合通配符以创建复杂模式
组合通配符可以创建强大的模式。让我们替换以“a”开头后跟任何字符的单词:
import re
text = "A apple a day keeps the doctor away."
replaced_text = re.sub(r"aw*", "WORD", text, flags=re.IGNORECASE)
print(f"Original: {text}")
print(f"Replaced: {replaced_text}")
aw*
匹配“a”后跟零个或多个单词字符(w
)。
实际示例:电子邮件和电话号码提取
re.sub()
擅长处理复杂的模式。让我们将电子邮件地址替换为“EMAIL”:
import re
text = "Contact us at [email protected] or [email protected]."
replaced_text = re.sub(r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}", "EMAIL", text)
print(f"Original: {text}")
print(f"Replaced: {replaced_text}")
此正则表达式匹配常见的电子邮件格式。
结论
re.sub()
函数结合正则表达式通配符,为Python中的字符串操作提供了一种灵活而有效的方法。掌握这些技术对于文本处理和数据清理任务非常有价值。仔细构建正则表达式对于避免意外替换至关重要。实验和理解通配符的细微之处是有效字符串操作的关键。