Python从0到100(二十四):正则表达式的应用
【摘要】 Python从0到100(二十四):正则表达式的应用
正则表达式是一种用于字符串搜索和操作的强大工具,它允许你使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在编程中,正则表达式被广泛应用于文本处理,如模式搜索、文本替换、字符串验证等。
1.正则表达式基础
正则表达式由一系列符号组成,每个符号都有特定的含义。以下是一些常见的正则表达式符号及其含义:
符号 | 解释 | 示例 | 说明 |
---|---|---|---|
. |
匹配任意单个字符 | b.t |
可以匹配 bat, but, b#t, b1t 等 |
\w |
匹配任意字母、数字或下划线 | b\wt |
可以匹配 bat, b1t, b_t 等,但不能匹配 b#t |
\s |
匹配任意空白字符 | love\syou |
可以匹配 “love you” |
\d |
匹配任意数字 | \d\d |
可以匹配 01, 23, 99 等 |
\b |
单词边界 | \bThe\b |
匹配 “The” 作为单词出现的情况 |
^ |
字符串开始位置 | ^The |
匹配以 “The” 开始的字符串 |
$ |
字符串结束位置 | .exe$ |
匹配以 “.exe” 结束的字符串 |
… | 更多符号和解释 | … | … |
2.Python对正则表达式的支持
Python通过内置的re
模块提供了对正则表达式的全面支持。以下是re
模块的一些核心函数:
函数 | 说明 |
---|---|
compile |
编译正则表达式,返回正则表达式对象 |
match |
匹配字符串的开始部分 |
search |
搜索字符串中第一次出现的模式 |
split |
根据模式分隔符拆分字符串 |
sub |
替换字符串中的模式 |
findall |
查找字符串中所有匹配的模式 |
finditer |
查找字符串中所有匹配的模式,返回迭代器 |
fullmatch |
匹配整个字符串 |
purge |
清除正则表达式缓存 |
re.IGNORECASE |
忽略大小写匹配 |
… | 更多功能和标记 |
3.实例演示
例子1:验证用户名和QQ号
import re
username = input("请输入用户名: ")
qq = input("请输入QQ号: ")
# 验证用户名(6-20位字母、数字或下划线)
if not re.match(r"^[0-9a-zA-Z_]{6,20}$", username):
print("用户名无效,请重新输入。")
# 验证QQ号(5-12位数字,首位不能为0)
if not re.fullmatch(r"[1-9]\d{4,11}", qq):
print("QQ号无效,请重新输入。")
if re.match(r"^[0-9a-zA-Z_]{6,20}$", username) and re.fullmatch(r"[1-9]\d{4,11}", qq):
print("输入有效!")
例子2:提取手机号码
import re
# 正则表达式匹配国内手机号码
pattern = re.compile(r'(?<=\D)1[34578]\d{9}(?=\D)')
sentence = "联系方式:13800138000"
phones = re.findall(pattern, sentence)
for phone in phones:
print(phone)
例子3:替换不良内容
import re
text = "This is a bad word: F*** it."
cleaned_text = re.sub(r'\bbad\b', 'good', text)
print(cleaned_text)
例子4:拆分字符串
import re
text = "One, two. Three, four. Five."
words = re.split(r'[,.]', text)
print(words)
4.总结
正则表达式是一个非常强大的工具,可以帮助你在编程中处理复杂的字符串匹配和操作任务。虽然开始时可能会觉得有些难度,但随着实践的增加,你会越来越熟悉它的使用。不要忘了利用在线工具来测试和调试你的正则表达式。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)