正则表达式具体用法大全

 

# 正则表达式:

## 单字符匹配:
```python
# 匹配某个字符串:
# text = "abc"
# ret = re.match('b',text)
# print(ret.group())


# 点(.):匹配任意的字符(除了'\n'):
# text = "\nabc"
# ret = re.match('.',text)
# print(ret.group())


# \d:匹配任意的数字:
# text = "aab"
# ret = re.match('\d',text)
# print(ret.group())


# \D:匹配任意的非数字:
# text = "cab"
# ret = re.match('\D',text)
# print(ret.group())


# \s:匹配的是空白字符(包括:\n,\t,\r和空格):
# text = " ab"
# ret = re.match('\s',text)
# print("="*30)
# print(ret.group())
# print("="*30)


# \S:非空白字符:
# text = "\nab"
# ret = re.match('\S',text)
# print("="*30)
# print(ret.group())
# print("="*30)


# \w:匹配的是a-z和A-Z以及数字和下划线:
# text = "+bc"
# ret = re.match('\w',text)
# print("="*30)
# print(ret.group())
# print("="*30)


# \W:匹配的是和\w相反的:
# text = "1bc"
# ret = re.match('\W',text)
# print("="*30)
# print(ret.group())
# print("="*30)


# []组合的方式,只要满足中括号中的某一项都算匹配成功:
# text = "bc"
# ret = re.match('[1b]',text)
# print("="*30)
# print(ret.group())
# print("="*30)

# 使用组合的方式[0-9]\d:
# text = "abc"
# ret = re.match('[^0-9]',text)
# print("="*30)
# print(ret.group())
# print("="*30)

# 使用组合的方式实现\w:
text = "+bc"
ret = re.match('[^a-zA-Z0-9_]',text)
print("="*30)
print(ret.group())
print("="*30)
```


## 多字符匹配:
```python
# *:匹配0个或者多个字符:
# text = "+abc"
# result = re.match('\D*',text)
# print(result.group())


# +:匹配1个或者多个字符:
# text = "1abc"
# result = re.match('\w+',text)
# print(result.group())


# ?:匹配前一个字符0个或者1个:
# text = "+abc"
# result = re.match('\w?',text)
# print(result.group())


# {m}:匹配m个字符:
# text = "+1abc"
# result = re.match('\w{2}',text)
# print(result.group())


# {m,n}:匹配m-n之间的个数的字符:
text = "1abc+"
result = re.match('\w{1,3}',text)
print(result.group())
```


## 正则表达式案例:
```python
# 1. 验证手机号码:手机号码的规则是以1开头,第二位可以是34587,后面那9位就可以随意了。
# text = "18677889900"
# result = re.match("1[34587]\d{9}",text)
# print(result.group())


# 2. 验证邮箱:邮箱的规则是邮箱名称是用数字、英文字符、下划线组成的,然后是@符号,后面就是域名了。
# text = "hynever@163.com"
# result = re.match("\w+@[a-z0-9]+\.[a-z]+",text)
# print(result.group())


# 3. 验证URL:URL的规则是前面是http或者https或者是ftp然后再加上一个冒号,再加上一个斜杠,再后面就是可以出现任意非空白字符了。
# text = "https://baike.baidu.com/item/Python/407313?fr=aladdin"
# result = re.match("(http|https|ftp)://\S+",text)
# print(result.group())


# 4. 验证身份证:身份证的规则是,总共有18位,前面17位都是数字,后面一位可以是数字,也可以是小写的x,也可以是大写的X。
text = "36530019870716234x"
result = re.match("\d{17}[\dxX]",text)
print(result.group())
```

## 开始/结束/贪婪和非贪婪:
```python
# ^:以...开头:
# text = "hello world"
# result = re.search("world",text)
# print(result.group())


# $:以...结尾:
# text = "hello world"
# result = re.search("hello$",text)
# print(result.group())
# text = ""
# result = re.search("^$",text)
# print(result.group())


# |:匹配多个字符串或者表达式:

# 贪婪和非贪婪:
# text = "12345"
# result = re.search("\d+?",text)
# print(result.group())


# 案例1:提取html标签名称:
# text = "<h1>这是标题</h1>"
# result = re.search("<.+?>",text)
# print(result.group())


# 案例2:验证一个字符是不是0-100之间的数字:
# 0,1,99,100
# 01
text = "101"
result = re.match("0$|[1-9]\d?$|100$",text)
print(result.group())
```


## 转义字符和原生字符串:
```python
# Python中的转义字符:
# raw
# text = r"hello\nworld"
# print(text)


# 正则表达式中的转义字符:
# text = "apple price is $99,range price is $88"
# result = re.findall("\$\d+",text)
# print(result)


# 原生字符串和正则表达式:
# 正则表达式的字符串解析规则:
# 1. 先把这个字符串放在Python语言层面进行解析。
# 2. 把Python语言层面解析的结果再放到正则表达式层间进行解析。
text = "\cba c"
# result = re.match("\\\\c",text) # \\\\c =(Python语言层面)> \\c =(正则表达式层面)> \c
result = re.match(r"\\c",text) # \\c =(正则表达式层面)> \c
print(result.group())
```

## 分组:
```python
text = "apple price is $99,orange price is $88"
result = re.search('.+(\$\d+).+(\$\d+)',text)
print(result.groups())

# group()/group(0):匹配整个分组
# group(1):匹配第一个分组
# group(2):匹配第二个分组
# groups():获取所有的分组
```


## re中常用的函数:
```python
# findall:查找所有满足条件的
# text = "apple price is $99,orange price is $88"
# result = re.findall(r'\$\d+',text)
# print(result)

# sub:根据规则替换其他字符串
# text = "nihao zhongguo,hello world"
# new_text = text.replace(" ","\n")
# new_text = re.sub(r' |,','\n',text)
# print(new_text)
# html = """
# <div class="job-detail">
#     <p>1. 3年以上相关开发经验 ,全日制统招本科以上学历</p>
#     <p>2. 精通一门或多门开发语言(Python,C,Java等),其中至少有一门有3年以上使用经验</p>
#     <p>3. 熟练使用ES/mysql/mongodb/redis等数据库;</p>
#     <p>4. 熟练使用django、tornado等web框架,具备独立开发 Python/Java 后端开发经验;</p>
#     <p>5. 熟悉 Linux / Unix 操作系统&nbsp;</p>
#     <p>6. 熟悉 TCP/IP,http等网络协议</p>
#     <p>福利:</p>
#     <p>1、入职购买六险一金(一档医疗+公司全额购买商业险)+开门红+全额年终奖(1年13薪,一般会比一个月高)</p>
#     <p>2、入职满一年有2次调薪调级机会</p>
#     <p>3、项目稳定、团队稳定性高,团队氛围非常好(汇合员工占招行总员工比例接近50%);</p>
#     <p>4、有机会转为招商银行内部员工;</p>
#     <p>5、团队每月有自己的活动经费,法定节假日放假安排;</p>
#     <p>6、办公环境优良,加班有加班费(全额工资为计算基数,加班不超过晚上10点,平日加班为时薪1.5倍,周末加班为日薪2倍,周末加班也可优先选择调休,管理人性化)。</p>
# </div>
# """
# new_html = re.sub(r'<.+?>',"",html)
# print(new_html)


# split:根据规则分割字符串
# text = "nihao zhongguo,hello world"
# result = re.split(r' |,',text)
# print(result)


# compile:编译正则表达式
text = "apple price is 34.56"
# r = re.compile(r"""
# \d+ # 整数部分
# \.? # 小数点
# \d* # 小数部分
# """,re.VERBOSE)
# result = re.search(r,text)
result = re.search(r"""
\d+ # 整数部分
\.? # 小数点
\d* # 小数部分
""",text,re.VERBOSE)
print(result.group())
```
如果想要在正则表达式中加注释,那么需要在正则表达式的函数最后加一个`re.VERBOSE`。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

输入框禁用状态 可清空输入框如何实现?组件写的

输入框禁用 通过 disabled 属性指定是否禁用 input 组件 <el-input placeholder"请输入内容" v-model"input" :disabled"true"> </el-input> <script> export default { data() { return { input: } } } </script> 可…

[套路] 浏览器引入Vue.js场景-WangEditor富文本编辑器的使用 (永久免费)

系列文章目录 [套路] el-table 多选属性实现单选效果[套路] 基于服务内存实现的中文拼音混合查询[套路] Bypass滑块验证码 目录 系列文章目录前言一、实现1.1 场景1.2 Window对象简介1.3 引入WangEditor1.4 页面配置 前言 公司使用freemarker的老旧SpringBootWeb后台项目, 前…

力扣热门算法题 59. 螺旋矩阵 II,60. 排列序列,61. 旋转链表

59. 螺旋矩阵 II&#xff0c;60. 排列序列&#xff0c;61. 旋转链表&#xff0c;每题做详细思路梳理&#xff0c;配套Python&Java双语代码&#xff0c; 2024.03.21 可通过leetcode所有测试用例。 目录 59. 螺旋矩阵 II 解题思路 完整代码 Java Python 60. 排列序列 …

adb logcat 命令使用

adb logcat 命令-CSDN博客 c fork, execl 参数 logcat | grep-CSDN博客 一.命令格式 adb logcat [选项] [过滤项], 其中 选项 和 过滤项 在 中括号 [] 中, 说明这是可选的; 选项解析: 1."-s"选项 : 只显示指定标签的日志; ------>adb logcat -s SWVDEC 显示SWVDE…

IDEA 2021.3.3最新激活破解教程(可激活至2099年,亲测有效)

下载地址&#xff1a;https://files.cnblogs.com/files/smallfa/ja-netfilter-all.rar?t1684636896&downloadtruehttps://files.cnblogs.com/files/smallfa/ja-netfilter-all.rar?t1684636896&downloadtrue1.Windows 系统下载解压到文件夹内&#xff0c;点击运行 ins…

就业班 2401--3.13 走进网络

走进网络 长风破浪会有时&#xff0c;直挂云帆济沧海。 1.认识计算机 1.计算机网络是由计算机和通讯构成的&#xff0c;网络研究的是“通信”。 ------1946 世界上第一台计算机 2.终端&#xff1a;只有输入和输出功能&#xff0c;没有计算和处理功能。 3.数据&#xff1a;一串…

js截取网址参数值方法

一般分为两种网址截取方法&#xff1a; 第一种&#xff0c;例如链接&#xff1a;http://192.168.32.135:9020/#/authentication/Login?toeknceshi token 值出现在 URL 的 hash 部分,所以你需要使用 window.location.hash 来获取 hash 部分&#xff0c;然后使用 URLSearchPara…

学点儿Java_Day6_面向对象:类、封装、构造方法

1 类 1.1 定义 类&#xff1a;对现实世界中事物的抽象。Student 对象&#xff1a;现实世界中具体的个体。张三、李四 这些具体的学生 面向对象的特征&#xff1a;抽象、封装、继承、多态 OOP: Object Oriented Programming 类和对象的总结&#xff1a; 1、现实世界都是由很多…

JAVA多线程之JMM

文章目录 1. Java内存模型2. 内存交互3. 三大特性3.1 可见性3.1.1 可见性问题3.1.2 原因3.1.3 解决方法 3.2 原子性3.3 有序性 在继续学习JUC之前&#xff0c;我们现在这里介绍一下Java内存模型&#xff0c;也就是JMM&#xff0c;进而引出关键字volatile的使用条件。 1. Java内…

vue中动态显示时间

我也是参考别人的。 代码如下 export default {name: Preview,data() {return {timer: undefined,nowTime: new Date(),};},created() {// 要显示时间&#xff0c;在渲染页面之前一直调用该函数&#xff0c;对this.time进行赋值开启定时this.timer setInterval(() > {//时…

相机的内外参数标定和畸变矫正原理和代码

相机的成像过程实质上是坐标系转换。首先空间中的点坐标由世界坐标系转换到相机坐标系&#xff0c;然后将其投影到成像平面&#xff08;图像物理坐标系&#xff09;&#xff0c;最后再将成像平面上的数据转换到图像像素坐标系。但是由于透镜制造精度及组装工艺的差别会引入畸变…

【SQL】1251. 平均售价(IFNULL函数)

前述 知识点回顾&#xff1a;MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用 题目描述 leetcode题目&#xff1a;1251. 平均售价 Code select P.product_id,ifnull(round(sum(units * price) / sum(units), 2), 0) as average_price from Prices P left join UnitsS…

无痕消除笔APP好用吗?3款超实用软件分享

无痕消除笔APP好用吗&#xff1f;在日常生活中&#xff0c;无痕消除笔APP的便捷性不言而喻。无论是想要去除照片中的小瑕疵&#xff0c;还是快速修正文案中的错别字&#xff0c;这款工具都能迅速而精准地满足需求。它不仅提升了我们处理图片和文本的效率&#xff0c;还让我们的…

一个Flash编程错误标志的探析

1、问题描述 客户项目中使用的 MCU 型号是 STM32G0B1, 他们反馈在代码中尝试擦除并编程 FLASH时, 发现 FLASH 的状态寄存器显示编程错误(如图 1 所示). 问题是当前代码还没有开始擦除和编程, 怎么就有了编程错误标志了呢 ? 如果不将此错误标志清除, 后续的编程操作无法继续.客…

vue2 table 页面 + 功能 展示

首页代码 <!-- 首页展示页面 弹框展示 --> <template><div style><el-button type"text" size"small" click"dailys()">测试跳转</el-button><!-- <div class"dingwei"><a href"#…

LeetCode 面试经典150题 134.加油站

题目&#xff1a; 在一条环路上有 n 个加油站&#xff0c;其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车&#xff0c;从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发&#xff0c;开始时油箱为空。 给定两个整数…

How to install mongodb on redhat 7.7

下载rpm: mongodb-enterprise-server-6.0.3-1.el7.x86_64.rpmmongodb-org-server-6.0.4-1.el7.x86_64.rpmmongodb-mms-6.0.9.100.20230201T2148Z.x86_64.rpm rpm -ivh mongodb-org-server-6.0.4-1.el7.x86_64.rpm rpm -ivh mongodb-mms-6.0.9.100.20230201T2148Z.x86_64.rpm …

【 Redux 】 Redux中间件的理解?常用的中间件有哪些?实现原理?

1. 是什么 中间件(Middleware)是介于应用系统和系统软件之间的一类软件&#xff0c;它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用&#xff0c;能够达到资源共享、功能共享的目的 那么如果需要支持异步操作&#xff0c;或者支持错误处理、日…

【办公类-16-07-07】“2023下学期 大班户外游戏2(有场地和无场地版,每天不同场地)”(python 排班表系列)

作品展示 背景需求&#xff1a; 2024年2月教务组发放的是“每周五天内容相同&#xff0c;两周10天内容相同”的户外游戏安排 【办公类-16-07-05】合并版“2023下学期 大班户外游戏&#xff08;有场地和无场地版&#xff0c;两周一次&#xff09;”&#xff08;python 排班表系…

css预处理器scss的使用如何全局引入

目录 scss 基本功能 1、嵌套 2、变量 $ 3、mixin 和 include 4、extend 5、import scss 在项目中的使用 1、存放 scss 文件 2、引入 variables 和 mixins 2-1、局部引入 2-2、全局引入 3、入口文件中引入其他文件 项目中使用 css 预处理器&#xff0c;可以提高 cs…