当前位置: 首页 > news >正文

用人话讲计算机:Python篇!(十二)正则运算+re模块

目录

一、正则表达式

(1)什么是正则表达式

(2)它的结构及使用

示例:

1.字符 . (←这里有个小点哦)

2.字符 | 

3.字符 [ ] 

4.字符^

5.字符\d

(3)补充:表示数量

示例:

1.字符+

2.字符*

3.字符?

4.字符{n}

二、贪婪模式与非贪婪模式

(1)贪婪模式

(2)非贪婪模式

三、捕获组

四、re模块

(1)re库函数一览

(2)具体用法示例

1.re.findall(pattern,string,flags)

2.re.compile(pattern,[flags])

3.re.match(pattern,string,flags = 0)

4.re.search(pattern,string,flags = 0)

5.group 和 groups 函数

6.re.sub(pattern,replace,string,count=0,flags=0)

7.re.split(pattern,string,maxsplit = 0,flags = 0)


本节内容较长,有一定难度,还请耐心观看~~~

一、正则表达式

(1)什么是正则表达式

标准解释:正则表达式,又称规则表达式,它是一种文本模式,同时也是计算机科学的一个概 念,其中包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符 ")。

正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符 串,通常被用来检索、替换那些符合某个模式(规则)的文本。

简单来说,它就像一种“搜索语言”,它允许你通过特定的符号搜索你想要的文本

比如,你面前有一大堆文本文字,这时你就可以通过代码搜索找出你想要的有价值的文本

(2)它的结构及使用

正则表达式由两部分构成:一个是普通字符,一个是特殊字符。

所谓普通字符,就是a,b,c……z和A,B,C……Z这些英文字母、数字0到9、标点符号。

所谓特殊字符,又叫元字符,它包括:

看不懂,别急,直接后面看示例

字符作用
.匹配除\n 之外的任何单个字符。
|匹配两侧任意表达式
[ ]匹配里面的字符
^匹配以^之后字符开头的字符串
[^][^abc]表示非a或非b或 非c的单个字符
\d匹配一个数字字符,等价于[0-9]
\D匹配一个非数字字符,等价于[^0-9]
\s匹配任何空白字符,包括空格、制表符、换页符等等。
\S匹配任何非空白字符。等价于[^\f\n\r\t\v]
\w匹配任何单词字符,包括下划线。等价于“[A-Z和a-z和0-9_]”
\W匹配任何非单词字符。等价于“[^A-Za-z0-9_]”
\f匹配一个换页符
\n匹配一个换行符
\r匹配一个回车符

示例:

前言:正则表达式要用到re模块哦~~~

1.字符 . (←这里有个小点哦)

它的作用是,匹配除\n 之外的任何个字符。

这里用到了re模块的findall(a,b)函数 ,作用是 在b中搜索字符串a,然后以列表类型返回符合的字符串

例如:

import re
a=re.findall('张.',"张三,李四,王五,张六七")
print(a)

我们可以看到,需要匹配的字符串是 张. 翻译过来就是,匹配 张+张后面一个单字符。

所以,系统输出:

['张三', '张六']

当然你要是想匹配张和后面俩字符,就可以改成 张..  (←俩点)

就变成:

import re
a=re.findall('张..',"张三,李四,王五,张六七")
print(a)

系统输出:

['张三,', '张六七'] 

2.字符 | 

它的作用是,匹配两侧任意表达式,如果不存在,则不返回

比如:

import re
a=re.findall('cat|dog',"i have a cat and a dog")
print(a)

系统输出:

['cat', 'dog']

3.字符 [ ] 

它的作用是,匹配里面的字符

比如:

import re
a=re.findall('[ab]',"abcd齐齐")
print(a)

系统输出:

['a', 'b']

当然如果 [ ] 里有\n之类的话,为防止将 \ 被误解为转义符,最好是前面加个r,如:r‘[ab]’

4.字符^

他的作用是,匹配以^之后字符开头的字符串

如下面代码:^hello就是匹配以hello开头的字符串 

import re
a = re.findall('^hello', "hello world")
print(a)

系统输出:

['hello'] 

5.字符\d

它的作用是,匹配一个数字字符,等价于[0-9]

import re
a = re.findall(r'\d',"我的电话号码是110")
print(a)

输出:

['1', '1', '0']

注意,这里要用上了 r  防止 \  被误解哦~~

相信通过这5个例子,你应该初步掌握了,那么再回过头看那个表格是不是清楚多了

(3)补充:表示数量

当然了,正则表达式不仅只有上面那些。

它的特殊符还包括以下这些:

(还是一样,看不懂直接看示例)

字符作用
+匹配前面的子表达式一次或多次。
*匹配前面的子表达式零次或多次。
匹配前面的子表达式零次或一次。
{n}n是一个非负整数,匹配确定的n次。
{n,}n是一个非负整数,至少匹配n次。
{n,m}m和n均为非负整数,其中n<=m。最少匹配n次且最多匹 配m次。
{,n}n是一个非负整数,至多匹配n次。

示例:

1.字符+

匹配前面的子表达式一次或多次

比如下面代码,a+,就相当于将开头是a的全部找出来

import re
print(re.findall('a+',"abcadefaaghaaa"))

系统输出:

['a', 'a', 'aa', 'aaa']

当然,上面可能说的不太准确,准确的来说,是将一个以a为开头,一个或多个a为结尾的找出来,我们可以看下面这个例子,ab+来理解一下:

import re
print(re.findall('ab+',"abcadefabaghabbcaba"))

系统输出:

['ab', 'ab', 'abb', 'ab']

我们可以看到它将一个以a为开头,一个或多个b为结尾的字符找了出来,简单来说,

就是除了最后面的字符b可以是一个或者很多个,但你前面的a必须是一个。

我们再来看一个例子理解一下,如abc+

import re
print(re.findall('abc+',"abcadeabbcababcc"))

系统输出:

['abc', 'abcc']

这里就是将一个以ab为开头,一个或多个c为结尾的字符找出来。

当然,标准的解释并不是这样,这只是对匹配一次或多次人话解释版本。

2.字符*

匹配前面的子表达式零次或多次

如果你能理解字符+,那么字符*也很好理解,比如下面代码:

import re
print(re.findall('ha*', "wo-hahaahh"))

系统输出:

['ha', 'haa', 'h', 'h']

我们用人话理解匹配零次或多次,就是将一个以h为开头,零个或多个a为结尾的找出来

3.字符?

匹配前面的子表达式零次或一次

如代码:

import re
print(re.findall('ha?',"wo-hahaahh"))

系统输出:

['ha', 'ha', 'h', 'h']

这里用人话理解匹配零次或一次,就是将一个以h为开头,零个或一个a为结尾的找出来

4.字符{n}

匹配确定的n次

我们经过理解,所谓的匹配几次就是,将一个以甲为开头,以几个乙为结尾的找出来

那么这里,也是一样的。比如我们匹配三次ab,那就是一个a开头,三个b为结尾的:

import re
print(re.findall('ab{3}',"ababbabbbabbbb"))

输出:

['abbb', 'abbb']

如果这个你能理解,相信{n,m}什么的,看看上面的表格的功能介绍,你也能理解了吧。

二、贪婪模式与非贪婪模式

所谓贪不贪婪啊,其实就是你要匹配多少个。

你想匹配的多了,那就是贪婪模式,想匹配少点,那就叫非贪婪模式喽~~

(1)贪婪模式

我们经过上面的学习,是不是已经发现计算机每次都默认匹配多次了,比如字符+和*之类。

对,所以啊,出现诸如:“{m,n}”、“{m,}”、“?”、“*”和“+”之类的,那都默认是贪婪模式。

我们在上面已经学习清楚了,就不再多赘述贪婪模式。

现在来将一个概念:回溯

标准解释:在匹配过程中,如果后面的部分无法匹配成功,贪婪模式会进行回溯, 即让出已经匹配成功的一部分字符,以便使整个表达式能够匹配成功。

有没有感觉很熟悉,这不就是我一直说的人话解释吗:将一个以甲为开头,以几个乙为结尾的找出来。

简单来说,就是我去匹配ab,在一串字符abbb中,字符+匹配,第一次匹配,我匹配到了ab,然后我想接着匹配,我想找a,但是没有啊,所以我就回溯,就是不要第一个已经匹配成功的字符a了,我就找b就行了,所以最后输出abbb

以上便是贪婪模式。

当然,如果关于回溯你没有太懂,没关系,这不重要,你只要记住我的人话版,一样能写代码。

(2)非贪婪模式

非贪婪模式与贪婪模式相反,它会在匹配成功的前提下,尽可能少地匹配字 符。

还是比如,我在一串字符abbb中用字符+去匹配ab,在非贪婪模式下,我只会得到ab

这还是很好理解的。

非贪婪模式的表示:在字符后面加一个?

比如ab+?、ab*?、ab??、ab{3,5}?

我们来看一个代码,加深理解:

import re
print(re.findall('ab*?',"abbbbbbbbcd"))
print(re.findall('ab+?',"abbbbbbbbcd"))
print(re.findall('ab??',"abbbbbbbbcd"))
print(re.findall('ab{3,5}?',"abbbbbbbbcd"))    #这里的5碰上?就相当于没用了

输出:

['a']
['ab']
['a']
['abbb'] 

三、捕获组

先说说什么是捕获组?

捕获组就是一个可以让你从一个字符串中提取出多个有用的子字符串的东西

简单来说呢,就是把我们找出来的字符串分成一个一个组。

捕获组,就是我们用( )括起来的东西,这样就被提取为了一个单独的“组”

多说无用,来看一个代码:

import re
print(re.findall(r'\w+:\d+',"Alex:1994,Sunny:1996"))
print(re.findall(r'(\w+):\d+',"Alex:1994,Sunny:1996"))
print(re.findall(r'(\w+):(\d+)',"Alex:1994,Sunny:1996"))

依次输出:
['Alex:1994', 'Sunny:1996']
['Alex', 'Sunny']
[('Alex', '1994'), ('Sunny', '1996')]

解释:

第一行:\w+:\d+意思是查找格式为  字符:数字  的字符

第二行:(\w+):\d+ 加上括号后,就将\w+捕获成一个组了,此时就只会输出被捕获的字符

第三行:(\w+):(\d+)都加上括号,就捕获了两个组,所以只输出捕获的两个组,我们可以看到相必第一个,此时没有了冒号


当然,以上只是捕获组的简单用法,稍后在re模块中,我们再详细介绍它。 

四、re模块

调用方法:import re

(1)re库函数一览

(2)具体用法示例

1.re.findall(pattern,string,flags)

解释:

pattern:正则表达式或要匹配的字符

string:一大串字符串内容

flags:一些参数,可以达成如忽略大小写进行匹配等的目的。

上文都是用这个函数的,这里不过多论述。

这里主要说说flags参数,它有如下几个参数:

使用时,可写成诸如 re.findall(r'ab*',"abbbbbbbbcd",re.I)

2.re.compile(pattern,[flags])

它主要是可以将正则表达式对象复用,避免了每次调用时都重新编译正则表达式,提高了效率。

import re
# 编译正则表达式
pattern = re.compile(r'\d+')
# 使用编译后的正则表达式对象进行匹配
result = pattern.findall('There are 123 apples and 45 bananas.')
print(result) 

输出:

['123', '45']

3.re.match(pattern,string,flags = 0)

解释:

pattern:正则表达式或要匹配的字符

string:一大串字符串内容

flags:同1中的参数

这里它其实和re.findall的用法是一样的,唯一不同的是:

  • re.match() 只检查字符串的起始部分,如果起始部分与正则表达式匹配,返回一个匹配对象。
  • re.findall() 会扫描整个字符串,返回所有符合正则表达式的部分,返回一个包含所有匹配项的列表。

比如:

result = re.match(r'\d+','apples 123')
print(result)  # 输出 None

 tips:哪是起始部分,看的是空格哦

4.re.search(pattern,string,flags = 0)

参数原理同re.match和re.findall一样。

而re.search与他们不同的是:扫描整个字符串,查找第一个匹配的子串。如果找到匹配,返回一个匹配对象;如果没有匹配,返回 None

5.group 和 groups 函数

先说group()

它用于返回匹配到的整个字符串。

参数默认为 0,表示获取整个字符内容。

参数为1,则表示获取第一个捕获组  (没错,它又出现了,上文三中有解释哦)

参数为2,则表示获取第二个捕获组

……

参数为n,则表示获取第n个捕获组

当然,如果获取不存在的捕获组,就会报错。

比如,我们先设定好如下代码:

import re
pattern =r"(\w+)\s(\w+)"
string = "Hello World"

我们可以看到,上面的代码中有两个捕获组,然后输入下面的代码:

print(re.search(pattern, string).group())
print(re.search(pattern, string).group(1))
print(re.search(pattern, string).group(2))

输出:

Hello World        #默认参数为0,输出整个匹配到的字符
Hello                  #参数为1,输出1个捕获组
World                 #参数为2,输出2个捕获组

再说groups( )

它跟group()不同的是,groups()不管参数是几,都将捕获组全部给你以元组形式返回来

如果没有捕获组,group()会报错,而groups()会返回一个空元组。

比如,我们继续输入代码:

import re
pattern =r"(\w+)\s(\w+)"
string = "Hello World"
print(re.search(pattern, string).groups())
print(re.search(pattern, string).groups(2))

输出:

('Hello', 'World')
('Hello', 'World')

6.re.sub(pattern,replace,string,count=0,flags=0)

功能:使用一个字符串替换正则表达式匹配到的内容

pattern:正则表达式或要匹配的字符

replace:替换匹配字符串的字符串

string:一大串字符串内容

count:匹配的最大替换次数

flags:同前文解释

简单来说,就是替换字符用的,直接看代码:

import re
print(re.sub(':','-',"Alex:1994,Sunny:1996"))
print(re.sub(':','-',"Alex:1994,Sunny:1996",1))

输出:

Alex-1994,Sunny-1996
Alex-1994,Sunny:1996

解释:

第一个print里,意思是将“:”替换成“-”然后输出

第二个print里,因为后面有一个1,所以意思是将一个“:”替换成“-”然后输出

7.re.split(pattern,string,maxsplit = 0,flags = 0)

功能:按正则表达式匹配内容,切割目标字符串

pattern:正则表达式或要匹配的字符

string:一大串字符串内容

maxsplit:最大分割数,剩余部分作为最后一个元素输出

flags:同前文

比如下面代码: 

import re
print(re.split(r'\d{6}', 'BIT100081 TSU100084'))
print(re.split(r'\d{6}', 'BIT100081 TSU100084',1))

输出:

['BIT', ' TSU', ' ']
['BIT', ' TSU100084']

解释:

第一个print:意思是,匹配6次数字并删除掉

第二个print:意思是,仅在第一个组里,匹配6次数字并删掉

tips:各位可能发现,输出的最后多了一个‘ ’,这是为啥呢?

答:这是因为匹配到数字后,re.split() 会将匹配部分删除,并在其位置插入空字符串。如果字符串的结尾部分没有其他字符,那么在 re.split() 后会产生一个额外的空字符串。


致此,正则表达式讲解完毕~!

相关文章:

用人话讲计算机:Python篇!(十二)正则运算+re模块

目录 一、正则表达式 &#xff08;1&#xff09;什么是正则表达式 &#xff08;2&#xff09;它的结构及使用 示例&#xff1a; 1.字符 . &#xff08;←这里有个小点哦&#xff09; 2.字符 | 3.字符 [ ] 4.字符^ 5.字符\d &#xff08;3&#xff09;补充&#xff…...

使用create-react-app创建工程时报错处理

1&#xff1a;全局安装create-react-app npm install -g create-react-app 2&#xff1a;切换到项目要创建的目录下 cd /d G:\vsCode_project\react 3&#xff1a;使用脚手架命令创建工程 create-react-app 项目名 项目名命名要遵循npm包命名规范&#xff1a;数字、小写字…...

C# 探险之旅:第三十五节 - 类型class之抽象类 (Abstract Class) 和 抽象方法 (Abstract Method)

&#x1f44b; 嗨&#xff0c;勇敢的探险家们&#xff01;欢迎再次踏上C#的神秘之旅。今天&#xff0c;我们要进入一片既神秘又充满无限可能的领域——抽象类与抽象函数的奇幻森林。想象一下&#xff0c;你是一名勇敢的骑士&#xff0c;要在这片森林里寻找传说中的“编程之宝”…...

qt-C++笔记之父类窗口、父类控件、对象树的关系

qt-C笔记之父类窗口、父类控件、对象树的关系 code review! 参考笔记 1.qt-C笔记之父类窗口、父类控件、对象树的关系 2.qt-C笔记之继承自 QWidget和继承自QObject 并通过 getWidget() 显示窗口或控件时的区别和原理 3.qt-C笔记之自定义类继承自 QObject 与 QWidget 及开发方式…...

Cisco Packet Tarcer配置计网实验笔记

文章目录 概要整体架构流程网络设备互连基础拓扑图拓扑说明配置步骤 RIP/OSPF混合路由拓扑图拓扑说明配置步骤 BGP协议拓扑图拓扑说明配置步骤 ACL访问控制拓扑图拓扑说明配置步骤 HSRP冗余网关拓扑图拓扑说明配置步骤 小结 概要 一些环境配置笔记 整体架构流程 网络设备互连…...

使用torch模拟 BMM int8量化计算。

使用torch模型BMM int8计算。 模拟&#xff1a;BMM->softmax->BMM 计算流程 import torch import numpy as np torch.manual_seed(777) def int8_quantize_per_token(x: torch.Tensor, axis: int -1, attnsFalse):if x.dtype ! torch.float32:x x.type(torch.float32)…...

【FreeMarker】实现生成Controller根据模板勾选的内容查询

需求&#xff1a;根据模板列表勾选的字段查询列表数据 FreeMarker代码&#xff1a; /*** 分页列表查询** param ${entityName?uncap_first}* param pageNo* param pageSize* param req* return*///AutoLog(value "${tableVo.ftlDescription}-分页列表查询")ApiOp…...

深入理解 XPath:XML 和 HTML 文档的利器

XPath&#xff08;XML Path Language&#xff09;是一种用于在 XML 和 HTML 文档中定位节点的语言。它常用于 XML 解析、Web 数据抓取&#xff08;如 Selenium 或 Scrapy&#xff09;以及配置文件解析。本文将带你深入了解 XPath 的语法、功能及其在实际中的应用。 目录 一、什…...

DDR5 中的数据反馈判决均衡(DFE):全面解析与展望

目录 一、引言二、DFE原理三、DFE架构四、实现方案五、测试方法六、DFE效果七、成本与收益八、具体应用九、技术发展趋势十、参考文献 一、引言 DDR5 作为新一代内存标准&#xff0c;其中的数据反馈判决均衡&#xff08;DFE&#xff09;技术更是引人注目。DFE即判决反馈均衡&a…...

Axure高保真数据可视化大屏图表组件库

推出了一款高保真数据可视化大屏图表组件库&#xff0c;旨在为用户提供丰富的图表类型&#xff0c;使数据呈现更加直观、生动。本文将详细介绍该组件库中的各类图表元件&#xff0c;包括面积图、折线图、柱状图、条形图、圆环图、雷达图、仪表图以及综合类图表&#xff0c;以满…...

100个问题学 langchain 入门 (1/10)

100个问题学 langchain 入门 (1/10) 文章目录 100个问题学 langchain 入门 (1/10)前言**问题 1** 什么是 langchain&#xff0c;解决什么问题&#xff1f;**问题 2** LangChain 的核心组件有哪些&#xff1f;请列举并简要说明每个组件的作用。**问题 3** 在 LangChain 中&#…...

0001.基于springmvc简易酒店管理系统后台

一.系统架构 springmvcjsplayuimysql 二.功能特性 简单易学习&#xff0c;虽然版本比较老但是部署方便&#xff0c;tomcat环境即可启用&#xff1b;代码简洁&#xff0c;前后端代码提供可统一学习&#xff1b;祝愿您能成尽快为一位合格的程序员&#xff0c;愿世界没有BUG; …...

每日一题 326. 3 的幂

326. 3 的幂 简单 class Solution { public:bool isPowerOfThree(int n) {while(n > 3){if(n % 3 0){n n/3;}else{return false;}}return n 1;} };...

解码数据有序之道——常见排序算法总结

本文整理了常见的排序算法&#xff0c;采用c编码&#xff0c;并对其时间复杂度作以了分析。 1. 冒泡排序&#xff08;Bubble Sort&#xff09; 实现思路&#xff1a; 从数组的第一个元素开始&#xff0c;依次比较相邻的两个元素。如果当前元素大于下一个元素&#xff0c;则交…...

C语言实现图片文件的复制

在C语言中&#xff0c;直接处理图片文件&#xff08;如JPEG、PNG等&#xff09;的复制&#xff0c;通常涉及到文件I/O操作。这些图片文件是二进制文件&#xff0c;因此需要使用二进制模式读取和写入文件。 图片文件复制代码&#xff1a; #include <stdio.h> #include&l…...

一、windows上配置ninja环境

Ninja是Google的一名程序员推出的注重速度的构建工具&#xff0c;一般在Unix/Linux上的程序通过make/makefile来构建编译&#xff0c;而Ninja通过将编译任务并行组织&#xff0c;大大提高了构建速度。下面介绍了windows上配置Ninja环境。 1.下载Ninja ninja官网地址&#xff1…...

我们来编程 -- win11多jdk版本切换

题记 售前的酒喝到位了调研需求及文档整理出来了开发要入场了&#xff0c;真惨啊&#xff01;年底了&#xff0c;手里活干的好好的&#xff0c;因为flyback在项目地&#xff0c;硬是被安排进来了拥抱变化&#xff0c;我呸…不得不切换系统&#xff0c;构建代码&#xff0c;一股…...

JAVA 图形界面编程 AWT篇(1)

前言 为了应对JAVA课设&#xff0c;小编走上了java的图形界面编程的道路&#xff0c;通过博客分享自己的学习历程&#xff0c;并进行笔记的记录。 AWT&#xff08;Abstract Window Toolkit&#xff09;介绍 AWT&#xff08;抽象窗口工具包&#xff09;是 Java 最早的图形用户界…...

C语言 字符串输入输出函数、scanf(“%[^\n]“,)可输入空格 、fgets删除换行符

字符串输入函数&#xff1a; scanf&#xff08;"%s"&#xff0c;数组名&#xff09; gets&#xff08;数组名&#xff09; fgets&#xff08;&#xff09; --- 文件流输入函数 函数原型&#xff1a; int scanf( const char *format, ...…...

【蓝桥杯每日一题】推导部分和——带权并查集

推导部分和 2024-12-11 蓝桥杯每日一题 推导部分和 带权并查集 题目大意 对于一个长度为 ( N ) 的整数数列 A 1 , A 2 , ⋯ , A N A_1, A_2, \cdots, A_N A1​,A2​,⋯,AN​ &#xff0c;小蓝想知道下标 ( l ) 到 ( r ) 的部分和 ∑ i l r A i A l A l 1 ⋯ A r \sum_{…...

Heavy Fighter动画包:Unity战斗系统根运动与状态机深度解析

1. 这套动画包不是“拿来就能用”的资源&#xff0c;而是需要你亲手校准的战斗系统骨架我在2021年接手一个横版ARPG项目时&#xff0c;美术总监甩给我三套Mecanim动画包&#xff0c;其中一套就是Heavy Fighter Mecanim Animation Pack。当时我第一反应是“终于不用手调IK了”&a…...

从拉灯呼叫到闭环处理:安灯管理软件操作流程能解决哪些场景痛点?一套安灯管理软件操作流程实战

在制造工厂的生产现场&#xff0c;异常就像不速之客&#xff0c;总在最忙的时候敲门。设备突然停机、物料没送到位、质量出现批量不良……这些异常发生后&#xff0c;最让人头疼的往往不是问题本身&#xff0c;而是处理问题的过程。工人发现设备停了&#xff0c;扯着嗓子喊班长…...

从扁平到触手可及,Midjourney拟物化全流程拆解,含12组高复用材质参数模板与避坑清单

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;从扁平到触手可及&#xff1a;Midjourney拟物化设计范式跃迁 当UI设计从iOS 7的极简扁平风席卷全球&#xff0c;我们曾笃信“去装饰即高级”。而Midjourney V6起悄然掀起一场静默革命——它不再满足于生成“看…...

智能驾驶系统场景下的自动化仿真测试评价技术【附仿真】

✨ 长期致力于智能驾驶系统、有效性评价、测试用例生成、测试场景优化、自动化仿真测试平台研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;基于复杂度…...

多模态大模型技术入门:让 AI 看见世界

多模态大模型技术入门&#xff1a;让 AI 看见世界 前言 人类感知世界的方式是多模态的——我们能看到图像、听到声音、读到文字。多模态大模型&#xff08;Multimodal LLM&#xff09;正是让 AI 拥有类似能力的关键技术。从 GPT-4V 到 Claude 3&#xff0c;从开源的 LLaVA 到 C…...

【卷卷观察】Google I/O 炸场背后:AI 行业正在经历一场“越南战争“

Google I/O 2026 开完了&#xff0c;朋友圈和推特上全是"智能体时代来了"的刷屏。但说实话&#xff0c;我越看越觉得不对劲。不是因为 Google 发布的东西不好——Gemini Spark 确实酷&#xff0c;93 个 Agent 并行写操作系统也确实震撼。而是因为这种"震撼"…...

宏裕塑胶代理沙伯基础创新SABIC(原GE塑料)全线工程塑料产品与技术服务

宏裕塑胶依托源头直采模式&#xff0c;整合沙伯基础创新 SABIC&#xff08;原 GE 塑料&#xff09;等国际一线品牌工程塑料原料&#xff0c;为制造业企业提供高性价比、稳定可控的供应链解决方案&#xff0c;助力客户降本增效&#xff0c;适用于汽车零配件、精密电子、注塑生产…...

如何打破闭源代码智能模型的垄断?DeepSeek-Coder-V2的技术突围与实践指南

如何打破闭源代码智能模型的垄断&#xff1f;DeepSeek-Coder-V2的技术突围与实践指南 【免费下载链接】DeepSeek-Coder-V2 DeepSeek-Coder-V2: Breaking the Barrier of Closed-Source Models in Code Intelligence 项目地址: https://gitcode.com/GitHub_Trending/de/DeepSe…...

AI人工智能行业的发展:从机器学习到深度学习的演变历程

在数字化浪潮席卷全球的当下&#xff0c;人工智能&#xff08;AI&#xff09;已然成为推动各行业变革的核心力量。对于软件测试从业者而言&#xff0c;深入了解AI从机器学习到深度学习的演变历程&#xff0c;不仅能把握技术发展脉络&#xff0c;更能为测试工作的智能化转型提供…...

为内容生成平台构建支持多模型备选的 AI 中台

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为内容生成平台构建支持多模型备选的 AI 中台 在内容创作领域&#xff0c;无论是自媒体运营还是营销团队&#xff0c;对文本生成的…...