一些使用 re 模块的代码示例

简介: 以下是使用 `re` 模块的十个代码示例,涵盖电话号码匹配、网页链接提取、字符串替换、电子邮件验证、文件名提取、特定单词匹配、日期信息提取、特定格式字符串匹配、字符串分割和中文文本匹配。这些示例展示了正则表达式在文本处理中的强大功能。【10月更文挑战第11天】

以下是一些使用re模块的详细代码示例,希望能帮助你更好地理解和应用该模块:

示例一:匹配电话号码

import re

def is_phone_number(text):
    pattern = r'^\d{3}-\d{3}-\d{4}$'
    match = re.search(pattern, text)
    if match:
        return True
    else:
        return False

text1 = "123-456-7890"
text2 = "1234567890"

print(is_phone_number(text1))  
print(is_phone_number(text2))

在这个示例中,我们定义了一个函数is_phone_number,用于判断输入的文本是否符合特定的电话号码格式(以-分隔的 10 位数字)。

示例二:提取网页链接

import re

html_text = "<a href='https://www.example.com'>Example Link</a>"
pattern = r'href="([^"]+)"'

matches = re.findall(pattern, html_text)
for match in matches:
    print(match)

这个示例展示了如何从包含 HTML 代码的文本中提取出网页链接。

示例三:替换字符串中的特定模式

import re

text = "Hello, 123 World! 456"
pattern = r'\d+'
replacement = 'XXX'

new_text = re.sub(pattern, replacement, text)
print(new_text)

在这里,我们将文本中的数字替换为XXX

示例四:验证电子邮件格式

import re

def is_valid_email(email):
    pattern = r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
    match = re.search(pattern, email)
    if match:
        return True
    else:
        return False

email1 = "user@example.com"
email2 = "invalid_email"

print(is_valid_email(email1))  
print(is_valid_email(email2))

这个示例用于验证电子邮件是否符合常见的格式要求。

示例五:提取文件名和扩展名

import re

file_path = "document.txt"
pattern = r'([^/\\]+)(?:\.(.+))?$'

match = re.search(pattern, file_path)
if match:
    file_name = match.group(1)
    extension = match.group(2)
    print(f"文件名: {file_name}, 扩展名: {extension}")
else:
    print("无效的文件路径")

此示例从文件路径中提取出文件名和扩展名。

示例六:匹配特定单词

import re

text = "The quick brown fox jumps over the lazy dog"
pattern = r'\b(quick|lazy)\b'

matches = re.findall(pattern, text)
for match in matches:
    print(match)

这里我们找出文本中特定的单词(quicklazy)。

示例七:提取日期信息

import re

date_text = "2023-09-21"
pattern = r'(\d{4})-(\d{2})-(\d{2})'

match = re.search(pattern, date_text)
if match:
    year = match.group(1)
    month = match.group(2)
    day = match.group(3)
    print(f"年: {year}, 月: {month}, 日: {day}")
else:
    print("无效的日期格式")

这个示例用于从日期字符串中提取出年、月、日等信息。

示例八:匹配特定格式的字符串

import re

text = "123ABC456"
pattern = r'\d+[A-Z]+\d+'

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

此示例验证文本是否符合特定的数字和字母组合的格式。

示例九:分割字符串

import re

sentence = "Hello, World! How are you?"
words = re.split(r'\s+', sentence)
for word in words:
    print(word)

通过正则表达式将句子按照空格分割成单词。

示例十:匹配中文文本

import re

chinese_text = "你好,世界!"
pattern = r'[\u4e00-\u9fff]+'

matches = re.findall(pattern, chinese_text)
for match in matches:
    print(match)

这个示例展示了如何匹配中文文本。

以上只是re模块的一些常见应用示例,实际应用中可以根据具体需求进行更多复杂的模式匹配和操作。正则表达式的强大功能使得它在文本处理中非常有用。

目录
相关文章
|
存储 编译器 C语言
【C语言必知必会 | 第三篇】顺序结构入门,这一篇就够了
【C语言必知必会 | 第三篇】顺序结构入门,这一篇就够了
1138 0
|
自然语言处理 物联网 API
检索增强生成(RAG)实践:基于LlamaIndex和Qwen1.5搭建智能问答系统
检索增强生成(RAG)实践:基于LlamaIndex和Qwen1.5搭建智能问答系统
检索增强生成(RAG)实践:基于LlamaIndex和Qwen1.5搭建智能问答系统
|
人工智能 定位技术 图形学
【unity实战】制作敌人的AI,使用有限状态机、继承和抽象类多态 定义不同状态的敌人行为
【unity实战】制作敌人的AI,使用有限状态机、继承和抽象类多态 定义不同状态的敌人行为
692 1
|
数据可视化 安全 IDE
快速部署Langflow构建低代码应用
本文介绍了Langflow的基本信息,并通过阿里云计算巢完成了Langflow的快速部署,使用者不需要自己下载代码,不需要自己安装复杂的依赖,不需要了解底层技术,只需要在控制台图形界面点击几下鼠标就可以快速部署并启动Langflow,非技术同学也能轻松搞定。
|
算法 程序员
程序设计的五个步骤
程序的设计过程,并不是立刻就进行代码设计,一般来讲包括设置文件的存放位置、说明书的设计、代码设计、程序测试、程序调试、注释说明。
1058 6
|
存储 Java Apache
Python Number类型详解!
本文详细介绍了 Python 中的数字类型,包括整数(int)、浮点数(float)和复数(complex),并通过示例展示了各种算术操作及其类型转换方法。Python 的 `int` 类型支持任意大小的整数,`float` 类型用于表示实数,而 `complex` 类型用于表示复数。此外,文章还对比了 Python 和 Java 在数字类型处理上的区别,如整数类型、浮点数类型、复数类型及高精度类型,并介绍了各自类型转换的方法。尽管两种语言在语法上有所差异,但其底层逻辑是相通的。通过本文,读者可以更好地理解 Python 的数字类型及其应用场景。
458 2
|
机器学习/深度学习 API
机器学习入门(七):线性回归原理,损失函数和正规方程
机器学习入门(七):线性回归原理,损失函数和正规方程
1053 1
|
数据采集 Web App开发 数据处理
一步步教你用Python Selenium抓取动态网页任意行数据
使用Python Selenium爬取动态网页,结合代理IP提升抓取效率。安装Selenium,配置代理(如亿牛云),设置User-Agent和Cookies以模拟用户行为。示例代码展示如何使用XPath提取表格数据,处理异常,并通过隐式等待确保页面加载完成。代理、模拟浏览器行为和正确配置增强爬虫性能和成功率。
1969 3
一步步教你用Python Selenium抓取动态网页任意行数据
|
XML 存储 数据格式
RAG效果优化:高质量文档解析详解
本文关于如何将非结构化数据(如PDF和Word文档)转换为结构化数据,以便于RAG(Retrieval-Augmented Generation)系统使用。
1148 11
|
数据可视化 数据挖掘 Linux
10幅必须掌握的Seaborn绘图
10幅必须掌握的Seaborn绘图
342 0