Python正则表达式的入门用法(上)

Python正则表达式是使用re模块来进行操作的。re模块提供了一组函数,用于进行字符串的匹配和查找操作。

下面是Python中使用正则表达式的一些常用函数:

re.search(pattern, string):在字符串中查找并返回第一个匹配的对象。

re.match(pattern, string):从字符串的开始位置匹配并返回第一个匹配的对象。

re.findall(pattern, string):找出字符串中所有匹配的对象并以列表形式返回。

re.sub(pattern, repl, string):将字符串中符合正则表达式的部分替换为指定的字符串。

re.split(pattern, string):使用正则表达式的模式分隔字符串,返回分隔后的列表。

re.compile(pattern):将正则表达式的模式编译为一个正则表达式对象,可以重复使用。

寻找第一个【匹对】的字符串,例如:

# coding=utf-8

# 导入python正则库
import re

check_name = input()
# 使用正则匹配'lxj'的信息,结果存储到is_name中
is_name = re.search(r'lxj', check_name)

if is_name is not None:
    print(is_name.span())
else:
    print(is_name)

在很多常见的场景中需要进行多个匹配,比如在商品名单中过滤出所有的小*商品的个数。

有这种需求咱们可以使用 re 模块中的 findall 或者 finditer方法。两个方法的区别在于 findall 返回的是一个列表,finditer 返回的是一个生成器。

例如:

# coding=utf-8

import re

input_str = input()

match_str = re.findall(r'[Pp]ython', input_str)

print(match_str)

正则表达式引擎使用连字符(-)来表示字符组中的区间,例如[0-9]匹配任意数字,[a-z]匹配任意小写字母,[A-Z]匹配任意大写字母。如果我们需要匹配连字符本身,需要对连字符进行转义。

例如:

# coding=utf-8

import re

input_str = input()

# 获取到数字的正则
print(re.findall(r'[0-9]', input_str))

# 获取到不是数字的正则
print(re.findall(r'[^0-9]', input_str))

在正则表达式中,有一些预定义的字符类和特殊字符,它们可以帮助我们更简洁地表示某些常见的字符集合。以下是一些常用的预定义字符类和特殊字符及其描述:

- \w:匹配任何字母、数字或下划线字符(等价于 [a-zA-Z0-9_])。在 Python3 中,它还可以匹配其他语言的字母和数字。
- \d:匹配任何数字字符(等价于 [0-9])。在 Python3 中,它还可以匹配其他语言的数字。
- \s:匹配任何空白字符,包括空格、制表符、换行符等。
- \b:匹配一个单词边界,即单词开始或结束的位置。它可以帮助我们精确地匹配整个单词而不是部分单词。

这些预定义字符类和特殊字符可以简化正则表达式的编写,提高代码的可读性和效率。

例如:

import re

text = "This is a sample sentence. It contains words and non-words."

# 匹配单词的正则表达式
word_pattern = r'\b\w+\b'
words = re.findall(word_pattern, text)
print("Words:", words)

# 匹配非单词的正则表达式
non_word_pattern = r'\b\W+\b'
non_words = re.findall(non_word_pattern, text)
print("Non-words:", non_words)

输出:

Words: ['This', 'is', 'a', 'sample', 'sentence', 'It', 'contains', 'words', 'and', 'non', 'words']
Non-words: [' ', ' ', ' ', '. ', ' ', ' ', ' ', ' ', ' ', ' ']

在上面的程序中,我们使用了两个正则表达式模式。第一个模式\b\w+\b匹配一个或多个连续的单词字符,\b表示单词的边界。re.findall函数返回所有匹配的结果。

第二个模式\b\W+\b匹配一个或多个连续的非单词字符,\W表示非单词字符。也使用re.findall函数返回所有匹配的结果。

在给定的示例文本中,re.findall函数返回的结果包含空格字符和标点符号。你可以根据需要自定义模式来排除或包含特定的字符。

一个更简单的例子:

# coding=utf-8

import re

input_str = input()

print(re.findall(r'\w', input_str))

print(re.findall(r'\W', input_str))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/769054.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

代码便利工具

【原创】PyCharm 安装MarkDown插件,并修改.md文件默认打开方式_pycharm如何修改markdown-CSDN博客 1.上面是填写README的工具。

DeepFaceLive----AI换脸简单使用

非常强大的软件,官方github https://github.com/iperov/DeepFaceLive 百度云链接: 链接:https://pan.baidu.com/s/1VHY-wxqJXSh5lCn1c4whZg 提取码:nhev 1下载解压软件 下载完成后双击.exe文件进行解压.完成后双击.bat文件打开软件 2 视频使用图片换…

JAVA+SSM+VUE《病人跟踪治疗信息管理系统》

1病人功能模块 病人登录进入病人跟踪治疗信息管理系统可以查看首页、个人中心、病例采集管理、预约管理、医生管理、上传核酸检测报告管理、上传行动轨迹管理、病人治疗状况管理等内容。 病例采集管理,在病例采集管理页面可以查看账号、姓名、住院号、入院时间、病…

2024鲲鹏昇腾创新大赛集训营Ascend C算子学习笔记

异构计算架构(CANN) 对标英伟达的CUDA CuDNN的核心软件层,向上支持多种AI框架,向下服务AI处理器,发挥承上启下的关键作用,是提升昇腾AI处理器计算效率的关键平台。主要包括有各种引擎、编译器、执行器、算…

[leetcode hot 150]第三题,无重复字符的最长子串

题目: 给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串的长度。 可以使用"滑动窗口"的方法来解决这个问题。基本思路如下: 使用两个指针(start和end)来定义一个窗口移动end指针来扩大窗口,直到遇到重复字符如果遇到重复字符,移动s…

Spring源码九:BeanFactoryPostProcessor

上一篇Spring源码八:容器扩展一,我们看到ApplicationContext容器通过refresh方法中的prepareBeanFactory方法对BeanFactory扩展的一些功能点,包括对SPEL语句的支持、添加属性编辑器的注册器扩展解决Bean属性只能定义基础变量的问题、以及一些…

每周题解:最大半连通子图

题目链接 最大半连通子图 题目描述 一个有向图 G ( V , E ) G\left(V,E\right) G(V,E) 称为半连通的 (Semi-Connected),如果满足: ∀ u , v ∈ V \forall u,v\in V ∀u,v∈V,满足 u → v u\to v u→v 或 v → u v\to u v→u&#xff0…

Go语言实现钉钉机器人接入Dify工作流

go语言实现实现钉钉机器人接入dify工作流,完成ai 流式问答 代码地址 有用的话点个star github地址 效果 配置使用 修改.env_template文件 为.env 设置.env文件内的环境变量 API_KEY: dify的api_keyAPI_URL: dify 的api接口CLIENT_ID : 钉钉机器人应用的idCLIENT…

基于Java的家政预约系统设计与实现

作者介绍:计算机专业研究生,现企业打工人,从事Java全栈开发 主要内容:技术学习笔记、Java实战项目、项目问题解决记录、AI、简历模板、简历指导、技术交流、论文交流(SCI论文两篇) 上点关注下点赞 生活越过…

Docker-compose 实现Prometheus+Grafana监控MySQL及Linux主机

. ├── Grafana │ ├── data │ └── docker-compose.yaml ├── Mysql │ ├── conf │ ├── data │ ├── docker-compose.yaml │ └── logs ├── Mysqld_exporter │ ├── conf │ └── docker-compose.yaml ├── node-exporter │…

RPA 第一课

RPA 是 Robotic Process Automation 的简称,意思是「机器人流程自动化」。 顾名思义,它是一种以机器人(软件)来替代人,实现重复工作自动化的工具。 首先要说一句,RPA 不是 ChatGPT 出来之后的产物&#x…

推荐三款常用接口测试工具!

接口测试是软件开发中至关重要的一环,通过对应用程序接口进行测试,可以验证其功能、性能和稳定性。随着互联网和移动应用的快速发展,接口测试变得越来越重要。为了提高测试效率和质量,开发人员和测试人员需要使用专业的接口测试工…

自然语言处理学习(2)基本知识 文本预处理+文本数据分析+文本增强

conda activate DL conda deactivate课程链接 一 一些包的安装 1 stanfordcorenlp 在anoconda prompt 里面:进入自己的conda环境,pip install stanfordcorenlp 进入方式 相关包下载,Jar包我没有下载下来,太慢了,这个…

提高Python爬虫的匿名性:代理ip的配置策略

在数字化时代的今天,网络数据采集已成为获取信息的重要手段,尤其在竞争激烈的商业环境中。Python作为一种强大的编程语言,广泛应用于开发各种数据爬虫来自动化地抓取网络信息。然而,随着网站安全意识的提高,越来越多的…

牛客小白月赛97

A.三角形 判断等边三角形&#xff0c;题不难&#xff0c;代码如下&#xff1a; #include <iostream>using namespace std;int a[110];int main() {int n;cin >> n;int x;int mx 0;for(int i 1; i < n; i){cin >> x;mx max(mx, x);a[x];}for(int i 1…

Java OnVif应用PTZ控制

研究OnVif在Java程序中应用&#xff0c;在此作记录&#xff0c;onvif-java-lib/release at master milg0/onvif-java-lib GitHub&#xff0c;在此连接中下载jar&#xff0c;并在项目中引用&#xff0c;该jar封装很好&#xff0c;可以方便快速完成功能 1.登录OnVif 2.PTZ控制…

【大数据】—美国交通事故分析(2016 年 2 月至 2020 年 12 月)

引言 在当今快速发展的数字时代&#xff0c;大数据已成为我们理解世界、做出决策的重要工具。特别是在交通安全领域&#xff0c;大数据分析能够揭示事故模式、识别风险因素&#xff0c;并帮助制定预防措施&#xff0c;从而挽救生命。本文将深入探讨2016年2月至2020年12月期间&…

反射(通俗易懂)

一、反射(Reflection) 反射就是:加载类&#xff0c;并允许以编程的方式解剖类中的各种成分(成员变量、方法、构造器等) 动态语言&#xff0c;是一类在运行时可以改变其结构的语言&#xff1a;例如新的函数、对象、甚至代码可以被引进&#xff0c;已有的函数可以被删除或是其他…

强化学习的数学原理:值迭代与策略迭代

概述 从课程地图上可以看出来&#xff0c;这是本门课程中第一次正式的介绍强化学习的算法&#xff0c;并且是一个 model-based 的算法&#xff0c;而在下一节课将会介绍第一个 model-free 的算法&#xff08;在 chapter 5&#xff09;。而这两节和之前所学的 BOE 是密切相关的&…

笔记-python爬虫概述

目录 常用第三方库 爬虫框架 动态页面渲染1. url请求分析2. selenium3. phantomjs4. splash5. spynner 爬虫防屏蔽策略1. 修改User-Agent2. 禁止cookies3. 设置请求时间间隔4. 代理IP池5. 使用Selenium6. 破解验证码常用第三方库 对于爬虫初学者&#xff0c;建议在了解爬虫原…