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

相关推荐
LDR00610 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术10 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
码云数智-园园10 天前
C++20 Modules 模块详解
java·开发语言·spring
swordbob11 天前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio
源分享11 天前
Java线程同步的多种实现方法(非常详细)
java·开发语言·jvm
Luminous.11 天前
C语言--day30
c语言·开发语言
何以解忧,唯有..11 天前
Go语言循环语句详解:for、range与循环控制
开发语言·算法·golang
謓泽11 天前
C语言不是语法,是通往机器的地图。
c语言·开发语言
云水一下11 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php
飞天狗11111 天前
零基础JavaWeb入门——第五课第二小节:九大内置对象 · 第2个:response(响应对象)
java·开发语言