0802_正则表达式

正则表达式

正则表达式,又称规则表达式**。**(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

  • 给定的字符串是否符合正则表达式的过滤逻辑(匹配)
  • 通过正则表达式,从字符串中获得我们想要的特定的部分

使用场景

  • 爬虫
  • 数据挖掘和分析

在Python中使用正则需要导入re

import re

首先我们来看两个例子来体验一下正则表达式的威力吧:

引入案例1

比如,已知一个列表:

​ li = [“Chinese”, “China”, “English”, “Britain”, “Canada”, “New Zealand”]

找出以Ch开头的字串。

# 法1
li = ["Chinese", "China", "English", "Britain", "Canada", "New Zealand"]
lt = []
for i in li:
	if i[0:2] == "Ch":
		lt.append(i)
print(lt)
# 法2
li = ["Chinese", "China", "English", "Britain", "Canada", "New Zealand"]
print([i for i in li if i[0:2]=="Ch"])

找出数字

import re
a = 'ab23fd5g67'
m = r'[0-9]+'
num = re.findall(m, a)
print(num)

# ['23', '5', '67']

Python正则表达式的基础

单字符匹配规则

字符功能
.匹配任意一个字符(除了\n)
[]匹配[]中列举的字符
\d匹配数字(0-9)
\D匹配非数字(\d取反)
\w匹配单词字符, A-Z, a-z, 0-9, _
\W\w取反
  • re.match(patter, string, flags = 0)

    • 作用:从字符串的开头开始匹配一个模式
      • 匹配成功,返回一个匹配成功的对象
      • 否则,返回None
    • 参数说明:
      • pattern:匹配的正则表达式
      • string:要匹配的字符串
      • flags:标志位,用于控制正则表达式的匹配方式。比如是否匹配多行,是否区分大小写
  • re.group([group1, ...])字符串或者元组

    • 作用:获取一个或者多个分组截获的字符串
    • 指定多个参数时就会以元组形式返回
    • group1可以使用编号,也可以使用别名
    • 编号0代表匹配整个字符串,默认返回group(0)
    • 如果没有截获字符串,返回None
    • 截获了多次的组,返回最后一个截获的子串
  • re.groups([default=None]) tuple

    • 作用:以元组形式返回全部分组截获的字符串。类似调用re.groups(1, 2, ..., last)
    • 如果没有截获字符串的组,默认返回None
import re
m = re.match('.', 'city')
print(m.group())

m = re.match('[Cc]', 'city')
print(m.group())

m = re.match('[0-9]', '156')
print(m.group())

c
c
1

数量匹配规则

字符功能
*匹配前一个字符出现0次多次或者无限次,可有可无,可多可少
+匹配前一个字符出现一次多次或者无限次,知道出现一次
?匹配前一个字符出现一次或者0次,要么有一次,要么没有
{m}匹配前一个字符出现m次
{m, }匹配前一个字符出现m次
{m, n}匹配前一个字符出现m到n次

表示边界

字符功能
^匹配字符串开头
$匹配字符串的结尾
\b匹配一个单词的边界
\B匹配非单词边界

匹配分组

字符功能
|匹配左右任意一个表达式
(ab)将括号中的任意字符作为一个分组
\num引用分组num匹配到的字符串
(?P)分组起别名
(?P=name)引用别名为name分组匹配到的字符串
  • re.search(pattern, str, flags=0)

    • 作用:扫描整个字符串,返回第一次成功匹配的对象
    • 如果匹配失败,返回None
    • 参数:
  • re.findall(pattern, str, flags=0)

    • 作用:获取字符串所有匹配的字串,并以列表形式返回
  • re.finfiter()

    • 作用:获取字符串所有匹配的子串,并返回一个迭代器

re.match()和re.search()的区别

  • re.match()从字符串开头开始匹配,如果匹配失败,None;
  • re.search()匹配整个字符串,知道找到一个匹配,如果匹配失败,None
9:35:03.432: [tmasservice] git -c credential.helper= -c core.quotepath=false -c log.showSignature=false reset -- tmasservice/src/main/resources/application-dev.properties 09:35:03.504: [tmasservice] git -c credential.helper= -c core.quotepath=false -c log.showSignature=false commit -F C:\Users\yWX1446235\AppData\Local\Temp\git-commit-msg-.txt --amend -- [dev-y14462345 8bbdb47826] @US20250802822315排产供需管理页面优化 Date: Wed Aug 20 09:27:28 2025 +0800 6 files changed, 186 insertions(+), 6 deletions(-) create mode 100644 tmasservice/src/main/java/com/huawei/it/tgmes/tmas/wavejuxin/entity/vo/ApsProductionScheduleDetailsVO.java 09:35:03.621: [tmasservice] git -c credential.helper= -c core.quotepath=false -c log.showSignature=false add --ignore-errors -A -f -- tmasservice/src/main/resources/application-dev.properties 09:35:08.083: [tmasservice] git -c credential.helper= -c core.quotepath=false -c log.showSignature=false push --progress --porcelain origin refs/heads/dev-y14462345:refs/heads/dev-y14462345 --set-upstream Enumerating objects: 56, done. Counting objects: 1% (1/56) Counting objects: 3% (2/56) Counting objects: 5% (3/56) Counting objects: 7% (4/56) Counting objects: 8% (5/56) Counting objects: 10% (6/56) Counting objects: 12% (7/56) Counting objects: 14% (8/56) Counting objects: 16% (9/56) Counting objects: 17% (10/56) Counting objects: 19% (11/56) Counting objects: 21% (12/56) Counting objects: 23% (13/56) Counting objects: 25% (14/56) Counting objects: 26% (15/56) Counting objects: 28% (16/56) Counting objects: 30% (17/56) Counting objects: 32% (18/56) Counting objects: 33% (19/56) Counting objects: 35% (20/56) Counting objects: 37% (21/56) Counting objects: 39% (22/56) Counting objects: 41% (23/56) Counting objects: 42% (24/56) Counting objects: 44% (25/56) Counting objects: 46% (26/56) Counting objects: 48% (27/56) Counting objects: 50% (28/56) Counting objects: 51% (29/56) Counting objects: 53% (30/56) Counting objects: 55% (31/56) Counting objects: 57% (32/56) Counting objects: 58% (33/56) Counting objects: 60% (34/56) Counting objects: 62% (35/56) Counting objects: 64% (36/56) Counting objects: 66% (37/56) Counting objects: 67% (38/56) Counting objects: 69% (39/56) Counting objects: 71% (40/56) Counting objects: 73% (41/56) Counting objects: 75% (42/56) Counting objects: 76% (43/56) Counting objects: 78% (44/56) Counting objects: 80% (45/56) Counting objects: 82% (46/56) Counting objects: 83% (47/56) Counting objects: 85% (48/56) Counting objects: 87% (49/56) Counting objects: 89% (50/56) Counting objects: 91% (51/56) Counting objects: 92% (52/56) Counting objects: 94% (53/56) Counting objects: 96% (54/56) Counting objects: 98% (55/56) Counting objects: 100% (56/56) Counting objects: 100% (56/56), done. Delta compression using up to 8 threads Compressing objects: 4% (1/23) Compressing objects: 8% (2/23) Compressing objects: 13% (3/23) Compressing objects: 17% (4/23) Compressing objects: 21% (5/23) Compressing objects: 26% (6/23) Compressing objects: 30% (7/23) Compressing objects: 34% (8/23) Compressing objects: 39% (9/23) Compressing objects: 43% (10/23) Compressing objects: 47% (11/23) Compressing objects: 52% (12/23) Compressing objects: 56% (13/23) Compressing objects: 60% (14/23) Compressing objects: 65% (15/23) Compressing objects: 69% (16/23) Compressing objects: 73% (17/23) Compressing objects: 78% (18/23) Compressing objects: 82% (19/23) Compressing objects: 86% (20/23) Compressing objects: 91% (21/23) Compressing objects: 95% (22/23) Compressing objects: 100% (23/23) Compressing objects: 100% (23/23), done. Writing objects: 3% (1/30) Writing objects: 6% (2/30) Writing objects: 10% (3/30) Writing objects: 13% (4/30) Writing objects: 16% (5/30) Writing objects: 20% (6/30) Writing objects: 23% (7/30) Writing objects: 26% (8/30) Writing objects: 30% (9/30) Writing objects: 33% (10/30) Writing objects: 36% (11/30) Writing objects: 40% (12/30) Writing objects: 43% (13/30) Writing objects: 46% (14/30) Writing objects: 50% (15/30) Writing objects: 53% (16/30) Writing objects: 56% (17/30) Writing objects: 60% (18/30) Writing objects: 63% (19/30) Writing objects: 66% (20/30) Writing objects: 70% (21/30) Writing objects: 73% (22/30) Writing objects: 76% (23/30) Writing objects: 80% (24/30) Writing objects: 83% (25/30) Writing objects: 86% (26/30) Writing objects: 90% (27/30) Writing objects: 93% (28/30) Writing objects: 96% (29/30) Writing objects: 100% (30/30) Writing objects: 100% (30/30), 4.87 KiB | 997.00 KiB/s, done. Total 30 (delta 14), reused 0 (delta 0), pack-reused 0 (from 0) remote: Start Git Hooks Checking [FAILED] remote: Error: Deny by project hooks setting 'default': message of commit '8bbdb4782606f5328b2fe4da47badca008a4519a' (see it by 'git log') does not match the regular-expression '@((DTS[0-9]{13})|(BUG[0-9]{14})|(US[0-9]{14})|(IR[0-9]{14}))+\r*\n*;.*' error: failed to push some refs to 'https://codehub-dg-g.huawei.com/MES/TGMES/TMAS/tmasservice.git' To https://codehub-dg-g.huawei.com/MES/TGMES/TMAS/tmasservice.git ! refs/heads/dev-y14462345:refs/heads/dev-y14462345 [remote rejected] (pre-receive hook declined) Done
08-21
内容概要:本文档详细介绍了UC25IQ64型号的64M-bit串行多I/O闪存芯片的技术规格与操作特性。该芯片支持标准SPI、Dual/Quad SPI以及QPI接口,具备多种高性能数据传输模式,包括最高达532Mbits/s的Quad I/O数据传输速率。文档涵盖了器件的引脚定义、存储结构、工作模式、命令集、状态寄存器配置、数据保护机制、电气特性和封装信息,重点描述了各种读写、擦除、编程指令的操作流程与时序要求,并提供了详细的AC/DC参数表和封装尺寸。此外,还介绍了低功耗管理模式、安全特性如唯一ID和安全寄存器、以及高级功能如连续读取模式和双倍传输速率(DTR)等。; 适合人群:电子工程技术人员、嵌入式系统开发者、硬件设计工程师以及从事存储器应用开发的相关专业人员。; 使用场景及目标:①用于需要高可靠性、低功耗、高速数据访问的嵌入式系统中作为程序或数据存储介质;②适用于工业控制、物联网设备、消费类电子产品等领域中的代码执行(XIP)和数据存储需求;③支持多种SPI模式和QPI协议,便于在不同主控平台上进行灵活集成与优化性能。; 其他说明:本产品为南京优存科技有限公司出品,具备10万次编程/擦除周期和20年以上数据保持能力,工作电压范围为2.7V至3.6V,无需额外高压编程电源。建议用户在设计时参考完整的电气特性与时序图表,确保信号完整性与稳定性。更多技术支持请联系厂家提供的联系方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值