Python 正则表达式

Python 正则表达式

介绍

正则表达式(Regular Expression,简称Regex)是一种强大的文本处理工具,它允许我们通过特定的模式(pattern)来搜索、匹配和操作字符串。Python的re模块为我们提供了正则表达式的功能,使得在Python中进行复杂的字符串操作变得简单而高效。

基本概念

字符匹配

  • .:匹配除换行符以外的任意字符。
  • [ ]:匹配括号内的任意一个字符,例如[abc]可以匹配abc
  • [^ ]:匹配不在括号内的任意一个字符,例如[^abc]可以匹配除abc以外的任意字符。
  • *:匹配前一个字符0次或多次。
  • +:匹配前一个字符1次或多次。
  • ?:匹配前一个字符0次或1次。
  • {n}:匹配前一个字符n次。
  • {n,}:匹配前一个字符至少n次。
  • {n,m}:匹配前一个字符至少n次,至多m次。

位置匹配

  • ^:匹配字符串的开始。
  • $:匹配字符串的结束。
  • \b:匹配单词的边界。
  • \B:匹配非单词的边界。

特殊字符匹配

  • \d:匹配任意一个数字字符,等价于[0-9]
  • \D:匹配任意一个非数字字符,等价于[^0-9]
  • \w:匹配任意一个字母数字或下划线字符,等价于[a-zA-Z0-9_]
  • \W:匹配任意一个非字母数字或下划线字符,等价于[^a-zA-Z0-9_]
  • \s:匹配任意一个空白字符,包括空格、制表符、换页符等。
  • \S:匹配任意一个非空白字符。

re模块的基本用法

re.match()

尝试从字符串的起始位置匹配一个模式,如果匹配成功,返回一个匹配对象,否则返回None

python 复制代码
import re

result = re.match(pattern, string)
if result:
    print("匹配成功")
else:
    print("匹配失败")

re.search()

扫描整个字符串并返回第一个成功的匹配,如果匹配成功,返回一个匹配对象,否则返回None

python 复制代码
import re

result = re.search(pattern, string)
if result:
    print("匹配成功")
else:
    print("匹配失败")

re.findall()

找到所有匹配的子串,并返回一个列表。

python 复制代码
import re

result = re.findall(pattern, string)
print(result)

re.sub()

替换匹配的子串。

python 复制代码
import re

new_string = re.sub(pattern, repl, string)
print(new_string)

re.split()

根据模式分割字符串。

python 复制代码
import re

result = re.split(pattern, string)
print(result)

实例

匹配邮箱地址

python 复制代码
import re

pattern = r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}"
email = "example@gmail.com"
result = re.match(pattern, email)
if result:
    print("有效的邮箱地址")
else:
    print("无效的邮箱地址")

提取URL中的域名

python 复制代码
import re

pattern = r"http[s]?://([a-zA-Z0-9.-]+)"
url = "https://www.example.com"
result = re.search(pattern, url)
if result:
    print("域名:", result.group(1))
else:
    print("未找到域名")

总结

正则表达式是Python中处理字符串的强大工具,通过掌握正则表达式的语法和Python的re模块,我们可以轻松地完成复杂的字符串操作。

相关推荐
二十雨辰4 分钟前
[Java基础]网络编程
java·开发语言
AC使者18 分钟前
介绍 TensorFlow 的基本概念和使用场景。
开发语言·自然语言处理·sqlite·github
kiramario1 小时前
【结束】JS如何不通过input的onInputFileChange使用本地mp4文件并播放,nextjs下放入public文件的视频用video标签无法打开
开发语言·javascript·音视频
土豆儿@1 小时前
java之泛型
java·开发语言
m0_748245342 小时前
python——Django 框架
开发语言·python·django
曼巴UE52 小时前
UE5.3 C++ TArray系列(一)
开发语言·c++·ue5
熬夜苦读学习2 小时前
Linux文件系统
linux·运维·服务器·开发语言·后端
菜鸟一枚在这2 小时前
深度解析建造者模式:复杂对象构建的优雅之道
java·开发语言·算法
阿巴~阿巴~2 小时前
多源 BFS 算法详解:从原理到实现,高效解决多源最短路问题
开发语言·数据结构·c++·算法·宽度优先
奔跑吧邓邓子4 小时前
【Python爬虫(34)】Python多进程编程:开启高效并行世界的钥匙
开发语言·爬虫·python·多进程