python 之正则表达式详解

news2025/7/27 17:50:44

文章目录

  • r与R
      • 原始字符串的特点:
      • 示例:
        • 正则表达式示例:
        • 文件路径示例:
    • 有没有r 带来的影响
      • 使用 `r` 前缀的示例:
      • 不使用 `r` 前缀的示例:
  • \b 作为单词的界限
      • 匹配以 "cat" 开头的单词:
      • 匹配以 "cat" 结尾的单词:
      • 匹配整个单词 "cat":
  • ' .' 匹配除'\n'外任意字符
      • 用法示例:
      • 示例:
  • *匹配位于 * 之前的字符或者子模式0次或者多次
      • 用法示例:
      • 示例:
  • + 匹配+ 之前的字符或者子模式 1次或者多次出现
      • 用法示例:
      • 示例:
  • - 号运算符
    • 在[ ]里面表示范围
    • 单单表示连接
      • 举例:
  • | 或关系
      • 用法示例:
      • 示例:
  • ^ 规定开头
      • 用法示例:
      • 示例:
  • $ 匹配以$ 前面的字符或者模式结束的字符串
      • 用法示例:
      • 示例:
  • ? 的可选择性与改变“贪心性”
      • 用法示例:
      • 示例:
      • 改变贪心性
      • 默认贪婪匹配和非贪婪匹配:
      • 示例:
  • \ 为转义
      • 1. 转义特殊字符:
      • 2. 匹配特殊字符:
      • 3. 匹配特定字符:
      • 示例:
  • \num 匹配重复出现字符或者模式
      • 示例1:匹配重复的连续数字
      • 示例2:匹配重复的日期格式

在这里插入图片描述
分清字符串与字符

r与R

在Python中,前缀 rR 表示原始字符串。这种原始字符串中的反斜杠字符 \ 被视为普通字符,而不是转义字符。这在处理正则表达式、文件路径等需要保留反斜杠原始含义的情况下非常有用。

原始字符串的特点:

  1. 反斜杠不进行转义: 在普通字符串中,反斜杠具有特殊含义,如 \n 表示换行符、\t 表示制表符等。但在原始字符串中,反斜杠只是普通字符,如 \\ 会被视为两个反斜杠字符而不是转义字符。

  2. 常用于正则表达式、文件路径: 在处理正则表达式时,原始字符串非常有用,因为正则表达式经常包含大量反斜杠。同时,处理文件路径时,原始字符串能够避免不必要的转义。

示例:

正则表达式示例:
import re

# 使用原始字符串处理正则表达式
pattern = r'\b\d{3}\b'  # 匹配一个三位数的单词
text = "The code is 123 and 4567."

matches = re.findall(pattern, text)
print(matches)
文件路径示例:
path = r'C:\Users\Username\Documents\file.txt'
with open(path, 'r') as file:
    content = file.read()
    print(content)

这些示例演示了如何使用 rR 前缀创建原始字符串,以便在正则表达式或文件路径等场景中保留反斜杠的原始含义。

有没有r 带来的影响

在Python中,使用 r 前缀与不使用 r 前缀的主要区别是,r 前缀创建的是一个"原始字符串",其中反斜杠 \ 不会被解释为转义字符。这在处理正则表达式时特别有用,因为正则表达式本身经常包含大量反斜杠。

使用 r 前缀的示例:

pattern = r'(\d{4}-\d{2}-\d{2})\s\1'

这个模式是用来匹配一个日期格式(YYYY-MM-DD),然后后面跟着相同的日期格式,两者之间有一个空格。在原始字符串中,反斜杠 \ 不会被看作是转义字符,而是作为普通字符。所以 \d 表示匹配数字字符,\s 表示匹配空白字符(空格、制表符等),\1 表示引用前面捕获的日期格式。

不使用 r 前缀的示例:

pattern = '(\d{4}-\d{2}-\d{2})\s\1'

在这种情况下,没有使用 r 前缀,因此反斜杠 \ 会被看作是转义字符。这可能导致一些意想不到的结果,因为反斜杠后面的字符可能被解释为特殊字符而非字面意义。 在正则表达式中,\d 代表数字字符,\s 代表空白字符,\1 引用前面捕获的内容。

总的来说,使用 r 前缀创建原始字符串通常更适合于编写正则表达式,因为它可以让反斜杠在字符串中保持原样,避免不必要的转义。

\b 作为单词的界限

当使用 \b 作为单词边界的元字符时,可以结合不同的模式以展示其作用。以下是不同用法的示例代码:

匹配以 “cat” 开头的单词:

import re

text = "The cat and the catfish sat on the catwalk."

pattern_starting_with_cat = r'\bcat\w*'
matches_starting_with_cat = re.findall(pattern_starting_with_cat, text)
print("匹配以 'cat' 开头的单词:", matches_starting_with_cat)

这段代码中的 r'\bcat\w*' 匹配以 “cat” 开头的单词。在给定文本中,它会返回以 “cat” 开头的所有单词,例如 “cat”, “catfish”, “catwalk”。

匹配以 “cat” 结尾的单词:

pattern_ending_with_cat = r'\b\w*cat\b'
matches_ending_with_cat = re.findall(pattern_ending_with_cat, text)
print("匹配以 'cat' 结尾的单词:", matches_ending_with_cat)

这段代码中的 r'\b\w*cat\b' 匹配以 “cat” 结尾的单词。在给定文本中,它会返回以 “cat” 结尾的所有单词,例如 “cat”, “catfish”。

匹配整个单词 “cat”:

pattern_entire_word = r'\bcat\b'
matches_entire_word = re.findall(pattern_entire_word, text)
print("匹配整个单词 'cat':", matches_entire_word)

这段代码中的 r'\bcat\b' 匹配整个单词 “cat”。在给定文本中,它会返回所有独立的 “cat” 单词。

但是它不会返回“catfood"等包含"cat"的单词

运行这些代码将展示 \b 作为单词边界的不同用法,以便更好地理解其功能。

’ .’ 匹配除’\n’外任意字符

在正则表达式中,. 是一个特殊的元字符,用于匹配除了换行符 \n 之外的任何单个字符。

用法示例:

  1. 匹配任何单个字符: 正则表达式 . 可以匹配任何单个字符,比如字母、数字、标点符号等,除了换行符。

  2. 结合其他模式使用: 可以将. 与其他模式结合使用,比如 a. 可以匹配以字母 “a” 开头,后面跟着任何一个字符的字符串。

  3. 贪婪匹配: . 是贪婪的,它会尽可能多地匹配字符,直到无法匹配为止。

示例:

import re

text = "The cat sat on the mat."

pattern = r'c.t'  # 匹配以 "c" 开头,后面是任意字符,然后是 "t"
matches = re.findall(pattern, text)
print(matches)  # 输出匹配的内容

在上述示例中,r'c.t' 这个模式将匹配字符串中以 “c” 开头,后面跟着任意字符,然后以 “t” 结尾的部分。在给定的文本中,匹配到的是 “cat”。

. 是一个非常常用的元字符,用于捕获或匹配大多数的单个字符,但需要注意它不能匹配换行符 \n

*匹配位于 * 之前的字符或者子模式0次或者多次

在正则表达式中,* 是一个量词,用于指示其前面的模式可以出现零次或多次。它表示匹配前面的元素零次或多次。

用法示例:

  • 匹配零次或多次:

    • a* 匹配零个或多个 “a”。
    • ab* 匹配 “a” 后面跟着零个或多个 “b”。例如,“a”, “ab”, “abb”, “abbb”, 等等。
  • 贪婪匹配:

    • a*贪婪的,它会尽可能多地匹配 “a”,直到无法匹配为止。
  • 结合其他模式使用:

    • 可以将 * 与其他字符结合使用,比如 .* 可以匹配任意数量的任意字符(除了换行符)。

示例:

import re

text = "The cat sat on the mat."

pattern = r's.*t'  # 匹配以 "s" 开头,后面是零个或多个任意字符,然后以 "t" 结尾
matches = re.findall(pattern, text)
print(matches)  # 输出匹配的内容

在上述示例中,r's.*t' 这个模式将匹配字符串中以 “s” 开头,后面跟着零个或多个任意字符,最后以 “t” 结尾的部分。在给定的文本中,匹配到的是 “sat” 和 “sat on the mat”。

* 是一个灵活且常用的量词,用于指示匹配其前面的模式零次或多次,以满足灵活的匹配需求。

+ 匹配+ 之前的字符或者子模式 1次或者多次出现

在正则表达式中,+ 是一个量词,用于指示其前面的模式必须至少出现一次或多次。它表示匹配前面的元素至少一次或多次。

用法示例:

  • 匹配一次或多次:

    • a+ 匹配一个或多个 “a”。
    • ab+ 匹配 “a” 后面跟着一个或多个 “b”。例如,“ab”, “abb”, “abbb”, 等等。
  • 贪婪匹配:

    • a+ 是贪婪的,它会尽可能多地匹配 “a”,直到无法匹配为止。
  • 结合其他模式使用:

    • 可以将 + 与其他字符结合使用,比如 .+ 可以匹配任意数量的任意字符(除了换行符)。

示例:

import re

text = "The cat sat on the mat."

pattern = r's.+t'  # 匹配以 "s" 开头,后面是一个或多个任意字符,然后以 "t" 结尾
matches = re.findall(pattern, text)
print(matches)  # 输出匹配的内容

在上述示例中,r's.+t' 这个模式将匹配字符串中以 “s” 开头,后面跟着一个或多个任意字符,最后以 “t” 结尾的部分。在给定的文本中,匹配到的是 “sat on the mat”。

+ 用于指示至少要有一个或多个其前面的元素出现,使得匹配更具体并要求至少有一次出现。
注意:+ 号会至少匹配一次,但是* 可以至少匹配0次

- 号运算符

在[ ]里面表示范围

[a-z]//表示小写字母

单单表示连接

- 不用作特殊含义时,它只匹配连字符本身而不具备其他特殊作用。

举例:

假设我们有一个文本字符串 “I have a 5-year-old cat”,如果我们使用模式 r'\d+-year-old',这个模式会匹配包含连字符的短语,比如 “5-year-old”。

在这个例子中,- 只是表示连字符,它并没有特殊的匹配行为。

| 或关系

在正则表达式中,| 称为“管道符”或“竖线”,它用于表示“或”关系。在正则表达式中,| 用于匹配多个模式中的任何一个。

用法示例:

  • 匹配多个模式之一:

    • cat|dog 匹配包含 “cat” 或 “dog” 中任何一个的字符串。
    • yes|no 匹配包含 “yes” 或 “no” 中任何一个的字符串。
  • 用括号分组:

    • (cat|dog)food 匹配 “catfood” 或 “dogfood”。
    • yes(no|yes) 匹配 “yesno” 或 “yesyes”。

示例:

import re

text = "I have a cat and a dog."

pattern = r'cat|dog'  # 匹配包含 "cat" 或 "dog" 中任何一个的字符串
matches = re.findall(pattern, text)
print(matches)  # 输出匹配的内容

在上面的示例中,r'cat|dog' 这个模式将匹配包含 “cat” 或 “dog” 中任何一个的部分。在给定的文本中,匹配到的是 “cat” 和 “dog”。

| 是一个非常有用的元字符,允许同时匹配多个模式中的任何一个,从而提供更灵活的匹配。

^ 规定开头

在正则表达式中,^ 是一个特殊的元字符,用于匹配字符串的开头。

用法示例:

  • 匹配字符串开头: ^pattern 匹配以指定模式 pattern 开头的字符串。
    • 例如,^hello 匹配以 “hello” 开头的字符串。

示例:

import re

text = "hello world"

pattern = r'^hello'  # 匹配以 "hello" 开头的字符串
matches = re.findall(pattern, text)
print(matches)  # 输出匹配的内容

在上面的示例中,r'^hello' 这个模式将匹配以 “hello” 开头的字符串。在给定的文本中,由于 “hello” 出现在开头,所以正则表达式匹配到了 “hello”。

^ 在正则表达式中具有锚定作用,它表示匹配字符串的开头位置。

$ 匹配以$ 前面的字符或者模式结束的字符串

在正则表达式中,$ 是一个特殊的元字符,用于匹配字符串的结尾。

用法示例:

  • 匹配字符串结尾: pattern$ 匹配以指定模式 pattern 结尾的字符串。
    • 例如,world$ 匹配以 “world” 结尾的字符串。

示例:

import re

text = "hello world"

pattern = r'world$'  # 匹配以 "world" 结尾的字符串
matches = re.findall(pattern, text)
print(matches)  # 输出匹配的内容

在上面的示例中,r'world$' 这个模式将匹配以 “world” 结尾的字符串。在给定的文本中,由于 “world” 出现在结尾,所以正则表达式匹配到了 “world”。

$ 在正则表达式中具有锚定作用,它表示匹配字符串的结尾位置。

? 的可选择性与改变“贪心性”

在正则表达式中,? 是一个量词,用于指示其前面的模式可以出现零次或一次,表示可选匹配。

用法示例:

  • 匹配零次或一次(也就是选择性):

    • colou?r 匹配 “colour” 或 “color”。在这里,ou? 表示 u 可以出现零次或一次,使得匹配模式更加灵活。
  • 非贪婪匹配:

    • a? 是非贪婪的,它只匹配零次或一次,尽可能少地匹配。
  • 结合其他模式使用:

    • 可以将 ? 与其他字符结合使用,比如 a?b 可以匹配零个或一个 “a”,后面跟着 “b”。

示例:

import re

text = "The colour is red, but color is also acceptable."

pattern = r'colou?r'  # 匹配 "colour" 或 "color"
matches = re.findall(pattern, text)
print(matches)  # 输出匹配的内容

在上述示例中,r'colou?r' 这个模式将匹配 “colour” 或 “color”。在给定的文本中,它匹配到了 “colour” 和 “color”,因为 ou? 允许 u 出现零次或一次,使得模式可以匹配两种拼写形式。

改变贪心性

? 紧跟在其他限定符(比如 *, +, {})后面时,它改变限定符的默认贪婪性,使其变为非贪婪或最小匹配。

默认贪婪匹配和非贪婪匹配:

  • 默认情况下,*, +, {} 等限定符是贪婪的:

    • 它们会尽可能多地匹配文本,直到无法匹配为止。
  • 在限定符后添加 ? 将使其变为非贪婪匹配:

    • 这表示它们会尽可能少地匹配文本,只匹配所需的最小字符数。

示例:

import re

text = "This is a sample sentence for demonstrating non-greedy matching."

# 贪婪匹配
pattern_greedy = r'.+e'
matches_greedy = re.findall(pattern_greedy, text)
print("贪婪匹配:", matches_greedy)

# 非贪婪匹配
pattern_non_greedy = r'.+?e'
matches_non_greedy = re.findall(pattern_non_greedy, text)
print("非贪婪匹配:", matches_non_greedy)

在这里插入图片描述

在上述示例中,r'.+e' 是一个贪婪匹配,它会匹配尽可能多的字符直到找到以 “e” 结尾的内容。相反,r'.+?e' 是一个非贪婪匹配,它会尽可能少地匹配字符直到找到以 “e” 结尾的内容。在给定文本中,这两种模式的匹配结果是不同的,一个会匹配更多的内容,另一个会匹配更少的内容。

\ 为转义

在正则表达式中,反斜杠 \ 是一个特殊字符,用于表示后面紧跟着的字符具有特殊含义或具有特定功能。它会改变紧跟其后的字符的解释方式,称为转义字符。

下面是一些常见的用法和特殊含义:

1. 转义特殊字符:

  • 使用 \ 可以让特殊字符失去其特殊含义。比如,. 通常匹配任意字符,但 \. 匹配实际的句点。

2. 匹配特殊字符:

  • \d 匹配一个数字字符。
  • \w 匹配一个字母、数字或下划线字符。
  • \s 匹配任何空白字符(例如空格、制表符、换行符等)。

3. 匹配特定字符:

  • \n 匹配换行符。
  • \t 匹配制表符。
  • \r 匹配回车符。
  • \\ 匹配实际的反斜杠字符。

示例:

假设有以下文本字符串:

text = "The cat and the hat sat flat on the mat."

import re

pattern = r'\st\w+'  # 匹配以空格开始,后面是字母 "t",然后跟着一个或多个字母、数字或下划线字符的内容
matches = re.findall(pattern, text)
print(matches)

在这个示例中,r'\st\w+' 这个模式会匹配以空格开始,后面是字母 “t”,然后跟着一个或多个字母、数字或下划线字符的内容。在给定的文本中,这个模式匹配到的内容是 " the"、 " the".

\num 匹配重复出现字符或者模式

当使用 \num 这种形式的反向引用时,num 代表着之前已经捕获的分组编号。这种引用可以用来匹配之前已经出现的相同模式。以下是两个示例:

示例1:匹配重复的连续数字

假设有字符串:

text = "1234 1234 5678"

使用正则表达式来匹配重复的连续数字:

import re

pattern = r'(\d+)\s\1'  # 匹配重复的连续数字
matches = re.findall(pattern, text)
print(matches)  # 输出匹配的内容

示例2:匹配重复的日期格式

假设有字符串:

text = "Today is 2023-10-10, and tomorrow is 2023-10-10 as well."

使用正则表达式来匹配重复的日期格式:

import re

pattern = r'(\d{4}-\d{2}-\d{2})\s\1'  # 匹配重复的日期格式
matches = re.findall(pattern, text)
print(matches)  # 输出匹配的内容

这两个示例都使用了 \num 的反向引用,用来匹配先前已经捕获的相同模式。

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

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

相关文章

从零开始的目标检测和关键点检测(三):训练一个Glue的RTMPose模型

从零开始的目标检测和关键点检测(三):训练一个Glue的RTMPose模型 一、重写config文件二、开始训练三、ncnn部署 从零开始的目标检测和关键点检测(一):用labelme标注数据集 从零开始的目标检测和关键点检测…

第06章 索引的数据结构

第06章 索引的数据结构 1. 索引及其优缺点 1.1 索引概述 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。 **索引的本质:**索引是数据结构。你可以简单理解为“排好序的快速查找数据结构”&#xff…

Vue 监听属性 watchEffect

watchEffect 函数:自动收集依赖源,不用指定监听哪个数据,在监听的回调中用到哪个数据,就监听哪个数据。 而 watch 函数:既要指定监听的数据,也要指定监听的回调。 watchEffect 函数:类似于 co…

OpenCV 笔记(4):图像的算术运算、逻辑运算

Part11. 图像的算术运算 图像的本质是一个矩阵,所以可以对它进行一些常见的算术运算,例如加、减、乘、除、平方根、对数、绝对值等等。除此之外,还可以对图像进行逻辑运算和几何变换。 我们先从简单的图像加、减、逻辑运算开始介绍。后续会有…

Window下SRS服务器的搭建

---2023.7.23 准备材料 srs下载:GitHub - ossrs/srs at 3.0release 目前srs release到5.0版本。 srs官方文档:Introduction | SRS (ossrs.net) Docker下载:Download Docker Desktop | Docker 进入docker官网选择window版本直接下载。由…

SolidWorks2018安装教程(正版)

网盘资源附文末 一.简介 SolidWorks软件是世界上第一个基于Windows开发的三维CAD系统,由于技术创新符合CAD技术的发展潮流和趋势,SolidWorks公司于两年间成为CAD/CAM产业中获利最高的公司。良好的财务状况和用户支持使得SolidWorks每年都有数十乃至数百…

Unity中获取时间戳、日期、时间、毫秒、秒以相互转换、自定义格式时间

Unity中获取时间戳、日期、时间、毫秒、秒以相互转换、自定义格式时间 介绍时间戳是什么什么时候用时间戳 获取时间获取当前时间获取时间戳日期转时间戳时间戳转日期将时间戳转换为多久之前星期自定义格式时间 总结 介绍 这里附带一个时间戳和时间转换的网址 时间戳是什么 时…

Java NIO为何导致堆外内存OOM了?

Java NIO为何导致堆外内存OOM了? 描述 某天报警:某台机器部署的一个服务突然无法访问。谨记第一反应登录机器查看日志,因为服务挂掉,很可能因OOM。这个时候在机器的日志中发现了如下的一些信息: nio handle failed j…

小程序视频编辑SDK技术解决方案

传统的视频制作方式不仅耗时耗力,而且难以满足企业多样化、个性化的定制需求。为了帮助企业解决这一难题,美摄科技推出了一款专为企业量身定制的小程序视频编辑SDK技术解决方案,让您的视频制作更加高效、专业! 一、功能强大&…

用前端框架Bootstrap的AdminLTE模板和Django实现后台首页的页面

承接博文 用前端框架Bootstrap和Django实现用户注册页面 继续开发实现 后台首页的页面。 01-下载 AdminLTE-3.1.0-rc 并解压缩 以下需要的四个文件夹及里面的文件百度网盘下载链接: https://pan.baidu.com/s/1QYpjOfSBJPmjmVuFZdSgFQ?pwdo9ta 下载 AdminLTE-3.1…

【SpringCloud学习笔记(一)】

SpringCloud学习笔记(一) 一、认识SpringCloud1.1 简介1.2 服务与拆分与远程调用1.3 微服务的远程调用 二、微服务的几大组件2.1 EureKa注册中心2.1.1 Eureka介绍:2.1.2 Eureka实践: 2.2 Ribbon负载均衡2.2.1 负载均衡流程2.2.2 负…

Elasticsearch(三)---索引

索引文档的语法curl用法 CURL: 简单认为是可以在命令行下访问url的一个工具 curl是利用URL语法在命令行方式下工作的开源文件传输工具,使用curl可以简单实现常见的get/post请求。 curl -X 指定http请求的方法 GET POST PUT DELETE restfu…

【POI-EXCEL-下拉框】POI导出excel下拉框数据太多导致下拉框不显示BUG修复

RT 最近在线上遇到一个很难受的BUG,我一度以为是我代码逻辑出了问题,用了Arthas定位分析之后,开始坚定了信心:大概率是POI的API有问题,比如写入数据过多。 PS:上图为正常的下拉框。但是,当下拉…

一文看懂图像格式 RAW、RGB、YUV、Packed/Unpacked、Bayer、MIPI、Planar、Semi-Planar、Interleaved

目录 一、通用属性 1. Packed/Unpacked 2. 压缩/非压缩 二、RAW 1. Bayer格式 2. 分类 3. MIPI RAW 三、RGB 分类 四、YUV 1. YUV与RGB转换 2. 分类 3. 内存计算 五、压缩格式 有的人,错过了,一生再也找寻不到。 本文详细分析各种图像格式…

[GDOUCTF 2023]<ez_ze> SSTI 过滤数字 大括号{等

SSTI模板注入-中括号、args、下划线、单双引号、os、request、花括号、数字被过滤绕过(ctfshow web入门370)-CSDN博客 ssti板块注入 正好不会 {%%}的内容 学习一下 经过测试 发现过滤了 {{}} 那么我们就开始吧 我们可以通过这个语句来查询是否存在ss…

鸿蒙切换到主线程

鸿蒙和安卓都是一样的视图操作都需要在主线程或者UI(视图线程)中处理,否则就会报错。 在安卓中可以通过: View.post(new Runnable() {Overridepublic void run() {textView.setText("更新textView");} });runOnUiThread(new Runnable() {public void run…

算法学习打卡day36| 738.单调递增的数字、 968.监控二叉树、贪心算法阶段学习总结

738.单调递增的数字 力扣题目链接 题目描述&#xff1a; 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递增 。 示例 1: 输入: n 10 …

JVM虚拟机:通过一个例子解释JVM中栈结构的使用

代码 代码解析 main方法执行&#xff0c;创建栈帧并压栈。 int d8&#xff0c;d为局部变量&#xff0c;是基础类型&#xff0c;它位于虚拟机栈的局部变量表中 然后创建了一个TestDemo的对象&#xff0c;这个对象在堆中&#xff0c;并且这个对象的成员变量&#xff08;day&am…

安防视频监控平台EasyCVR(V.3.4)新功能:告警查询操作步骤

视频集中存储/云存储/视频监控管理平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。AI智能大数据视频分析EasyCVR平台已经广泛应用在工地、工厂、园区、楼…

2024王道考研计算机组成原理——中央处理器

CPU的运算器其实就是进行固定的数据处理&#xff0c;后面讲的CPU主要侧重的是它的控制器功能 运算器的基本结构 左右两边都是16位&#xff0c;因为寄存器可能位于左右两端的一边(源/目的操作数) A、B两端都要接一堆线 通用寄存器 ALU都在运算器当中 从主存来的数据直接放到…