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 = "[email protected]"
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模块,我们可以轻松地完成复杂的字符串操作。

相关推荐
q5673152319 分钟前
IBM官网新闻爬虫代码示例
开发语言·分布式·爬虫
笨笨马甲25 分钟前
附加模块--Qt OpenGL模块功能及架构
开发语言·qt
钮钴禄·爱因斯晨1 小时前
Java 面向对象进阶之多态:从概念到实践的深度解析
java·开发语言·数据结构
鸽子炖汤1 小时前
Java中==和equals的区别
java·开发语言·jvm
有个傻瓜1 小时前
PHP语言核心技术全景解析
开发语言·kubernetes·php
菥菥爱嘻嘻2 小时前
JS手写代码篇---手写ajax
开发语言·javascript·ajax
江梦寻2 小时前
MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)
开发语言·后端·python·macos·架构·策略模式
霖檬ing2 小时前
Python——MySQL远程控制
开发语言·python·mysql
qq_429879673 小时前
省略号和可变参数模板
开发语言·c++·算法
优秀的颜4 小时前
计算机基础知识(第五篇)
java·开发语言·分布式