入门re 正则表达式

ops/2024/9/24 10:34:23/

1.字符匹配:

a:匹配字符 a

abc:匹配字符串 abc

import reresult = re.search(r"a", "abcabcd", re.I)
print(result, type(result), result.start(), result.end(), result.group())result = re.findall(r"abc", "abcabcd", re.I)
print(result)

2.特殊字符: 

.:匹配除换行符外的任何单个字符。

import re
result = re.findall(r".", "abc123=+^$( &% \n", re.S)
print(result)

\d:匹配任何数字,相当于 [0-9]

import re
result = re.findall(r"\d", "123abc=+*&%#_(^@!")
print(result)

\D:匹配任何非数字字符。

import re
result = re.findall(r"\D", "123abc=+*&%#_(^@!")
print(result)

\w:匹配任何字母数字字符,相当于 [a-zA-Z0-9_]

import re
result = re.findall(r"\w", "123abc=+*&%#_(^@!")
print(result)

\W:匹配任何非字母数字字符。

import re
result = re.findall(r"\W", "123abc=+*&%#_(^@!")
print(result)

\s:匹配任何空白字符(空格、制表符、换行符等)。

import re
result = re.findall(r"\s", " 123 abc =+*& %#_(^@!")
print(result)

\S:匹配任何非空白字符。

import re
result = re.findall(r"\S", " 123 abc =+*& %#_(^@!")
print(result)

3.字符集:

[abc]:匹配字符 ab 或 c 中的任何一个。

import re
result = re.match(r"[abc]", "abcabcd")
print(result)

[a-z]:匹配小写字母中的任何一个。

[A-Z]:匹配大写字母中的任何一个。

[0-9]:匹配任何数字。

import reresult = re.findall(r"[123]", "12345abcdef")
print(result)result = re.findall(r"[1-5a-f]", "12345abcdef")
print(result)

4.字符集的否定:

[^abc]:匹配除 ab 和 c 之外的任何字符。

import re
result = re.findall(r"^abc", "abc123=+^$ \na( &% ", re.M)
print(result)

5.数量词:

*:匹配前面的元素零次或多次。

import reresult = re.findall(r"\d*", "12345")
print(result)result = re.findall(r"\d*?", "12345")
print(result)

+:匹配前面的元素一次或多次。

import reresult = re.findall(r"\d+", "12345")
print(result)result = re.findall(r"\d+?", "12345")
print(result)

?:匹配前面的元素零次或一次。

import reresult = re.findall(r"\d?", "12345")
print(result)result = re.findall(r"\d??", "12345")
print(result)

{n}:匹配前面的元素正好 n 次。

{n,}:匹配前面的元素至少 n 次。

{n,m}:匹配前面的元素至少 n 次,但不超过 m 次。

import reresult = re.findall(r"\d{3}", "12345")
print(result)result = re.findall(r"\d{2,4}?", "12345")
print(result)

6.位置与边界:

^:匹配输入字符串的开始位置。(re.S,re.M 可以多行检测)

import re
result = re.findall(r"^a", "abc123=+^$ \na( &% ", re.M)
print(result)

$:匹配输入字符串的结束位置。

import re
result = re.findall(r" $", "abc123=+^$ \na( &% ", re.M)
print(result)

\b:匹配单词边界。

import re
result = re.findall(r"\b", "abcdef")
print(result)

\B:匹配非单词边界。

import re
result = re.findall(r"\B", "abcdef")
print(result)

7.分组和选择:

(abc):匹配并捕获子表达式 abc

import reresult = re.search(r"(.*)4(.*)c(.*)f", "12345abcdef")
print(result, result.group(), result.group(1), result.group(2), result.group(3))result = re.findall(r"(.*)4(.*)c(.*)f", "12345abcdef")
print(result[0][0], result[0][1], result[0][2])

a|b:匹配 a 或 b

import re
result = re.findall(r"[1-5]|[a-f]", "12345abcdef")
print(result)


http://www.ppmy.cn/ops/99044.html

相关文章

HTTP?HTTPS?HTTP2.0

Http HTTP(HyperText Transfer Protocol,超文本传输协议)是一种用于分布式、协作式、超媒体信息系统的应用层协议。它基于TCP/IP通信协议来传递数据,如HTML文件、图片文件等。以下是HTTP的详细解析: 一、HTTP的基本…

C++中如何将类的非静态成员函数绑定到函数指针上

简介 在c11中,可以通过std::bind将非静态成员函数绑定到function对象上,但是如何绑定到c中的函数指针上,可以借助function 实现 简单实现 typedef int (*ProcessCallbackT)(int, int); void register_with_library(ProcessCallbackT func…

【数据结构】链表

目录 1.链表的概念及结构 2.单链表的实现 2.1 SLTPrint()打印链表 2.2 SLTBuyNode() 申请空间 2.3 SLTPushBack() 尾插 2.4 SLTPushFront() 头插 2.5 SSLTPopBack() 尾删 2.6 SLTInesert(…

进阶SpringBoot之 Druid 数据源

Druid 是开源平台上一个数据库连接池实现&#xff0c;具备日志监控功能 Druid 可以很好的监控 DB 连接池和 SQL 的执行情况&#xff0c;天生就是针对监控而生的 DB 连接池 Maven 仓库 pom.xml 文件导入 Durid 的 jar 包 <!-- Druid依赖 --><dependency><grou…

【超实用!】一文搞懂Transformer原理!‍✨

Hey小伙伴们&#xff01;&#x1f44b; 今天要和大家分享一个超酷的技术点&#xff1a;Transformer模型的原理&#xff01;如果你对深度学习和自然语言处理感兴趣&#xff0c;那么这篇文章绝对不容错过&#xff01;&#x1f469;‍&#x1f4bb;✨ &#x1f4da; Transformer是…

flutter 中 ssl 双向证书校验

SSL 证书&#xff1a; 在处理 https 请求的时候&#xff0c;通常可以使用 中间人攻击的方式 获取 https 请求以及响应参数。应为通常我们是 SSL 单向认证&#xff0c;服务器并没有验证我们的客户端的证书。为了防止这种中间人攻击的情况。我么可以通过 ssl 双向认证的方式。即…

设计模式-结构性模式-桥接模式

1.桥接模式定义 桥接模式就是将抽象部分与他的实现部分分离&#xff0c;使他们都可以独立的变化&#xff1b; 桥接模式用一种巧妙地方式处理多层继承存在的问题&#xff0c;用抽象关联来取代传统的多层继承&#xff0c;将类之间的静态继承关系转变为动态的组合关系&#xff0c;…

RocketMQ 如何保证消息不丢失?

RocketMQ 的消息想要确保不丢失&#xff0c;需要生产者、消费者以及 Broker 的共同努力&#xff0c;缺一不可。 生产者&#xff08;Producer&#xff09; 1、发送方式&#xff1a;选择同步发送 同步发送&#xff1a;发送消息后&#xff0c;需要阻塞等待 Broker 确认收到消息…