Python 正则表达式

Python 正则表达式

介绍

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

基本概念

字符匹配

  • .:匹配除换行符以外的任意字符。
  • [ ]:匹配括号内的任意一个字符,例如[abc]可以匹配a、b或c。
  • [^ ]:匹配不在括号内的任意一个字符,例如[^abc]可以匹配除a、b、c以外的任意字符。
  • *:匹配前一个字符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模块,我们可以轻松地完成复杂的字符串操作。

相关推荐
kimnoic27 分钟前
Python操作xlwings的实例详解
开发语言·python
栗子~~1 小时前
java - logstash-logback-encoder 集成 demo
java·开发语言·logback
ESDWAN1 小时前
跨境网络频繁掉线怎么排查?从企业内网到 SD-WAN 链路的故障诊断
开发语言·网络·php
程序员zgh2 小时前
C++ erase() 函数用法
c语言·开发语言·c++·学习
lee_tianbai2 小时前
Java SSM 电影票预定系统|完整前后端项目,开箱即用(源码分享)
java·开发语言·数据库
迪丽热爱3 小时前
一、C语言概述与程序结构
c语言·开发语言·算法
HUIBUR科技3 小时前
AI中枢:打破数据孤岛与流程孤岛双重困境
开发语言·ai
鱼宵3 小时前
LangChain4j 结构化输出:让模型吐出 Java 对象,JSON 不再手写解析
java·开发语言·json·langchain4j
w2sfot3 小时前
【JS加密在线】jsjiami.online(让JavaScript 更安全!)
开发语言·javascript·安全