正则表达式介绍及一些实例(js语法)

news2024/11/16 1:27:26

一、正则表达式

正则表达式,全称“Regular Expression”,在代码中常简写为regex、regexp或RE。正则表达式,就是用某种模式去匹配一类字符串的公式。

  1. 显式定义(构造函数)

let  变量名 =  new RegExp("正则表达式模式");

  2. 隐式定义(字面量)

let 变量名 =  /正则表达式模式/

二、常用方法

1.test

正则去匹配字符串,如果匹配成功就返回真,匹配失败返回假

写法:正则.test(字符串)

如:

var str='abcdef';

var re=/b/;

console.log(re.test(str)); // ture

比如找出-

var str='abcdef';

var re=/-/;

console.log(re.test(str)); // false

2.search

正则去匹配字符串,如果匹配成功,就返回匹配成功的位置,如果匹配失败就返回-1

写法:字符串.search(正则)

如:

var str="abcdef";

var re=/b/;

console.log(str.search(re));    // 返回1

var re=/w/;

console.log(str.search(re));    // 返回-1

var re=/B/;

console.log(str.search(re));    // 返回-1

3.match

正则去匹配字符串,如果匹配成功,就返回匹配成功的数组,如果匹配不成功,就返回null

写法:字符串.match(正则)

比如找出数字

var str="dgfhfgh254bhku289fgdhdy675";

var re=/\d+/;

console.log(str.match(re)); // 输出[ '254', '289', '675' ]        

比如找出-

var str="dgfhfgh254bhku289fgdhdy675";

var re=/-/;

console.log(str.match(re)); // null

4.replace

正则去匹配字符串,匹配成功的字符被新的字符串替换

replace的写法:字符串.replace(正则,新字符串)

var str="aaa";

var re=/a/;

var strNew=str.replace(re,"b");

console.log(str);       // 输出aaa

console.log(strNew);    // 输出baa

5.exec

正则去匹配字符串,

如果匹配成功,就返回匹配成功的数组,

index:表示第一个匹配的字符在原字符串中的位置,

input:表示原字符串,

groups:表示当初中命名的分组时匹配到的分组对象;

如果匹配不成功,就返回null

写法:正则. exec(字符串)

比如找出数字

var str="dgfhfgh254bhku289fgdhdy675";

var reg=/\d+/;

console.log(reg.exec(str));

比如找出-

var str="dgfhfgh254bhku289fgdhdy675";

var reg=/-/;

console.log(reg.exec(str));

 

三、常用元字符

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

\D 匹配非数字,相当于[^0-9]

\w 匹配字母或数字或汉字或下划线

\W 匹配任意不是字母、数字、汉字或下划线的字符

\s 匹配任意的空白符,如空格、换行符、制表符等

\S 匹配任意不是空白符的字符

.(点号) 匹配除了换行符以外的任意字符

[...] 匹配方括号中的所有字符

[^...] 匹配非方括号中的所有字符

 

四、连接符-

[0-9] 匹配数字,等价于\d

[a-z] 匹配英文小写字母

[A-Z] 匹配英文大写字母

[0-9a-zA-Z] 匹配数字或英文字母

五、限定符

+ 重复1次或更多次

  • 重复0次或更多次(任意次数)重复0次或1次(最多1次)

{n} 重复n次

{n,} 重复n次或更多次(最少n次)

{n,m} 重复n到m次

六、定位符

^ 限定开始位置的字符

$ 限定结尾位置的字符

\b 限定单词(字)边界的字符

\B 限定非单词(字)边界的字符

七、修饰符

g: global 全文搜索,不添加,搜索到第一个匹配停止

i: ignore case 忽略大小写,默认大小写敏感

m: multiple lines 多行搜索

八、特殊转义符

正则特殊转义符

 \f 匹配换页符

 \n 匹配换行符

 \r 匹配回车符

 \t 匹配制表符

 \v 匹配垂直制表符

   \\ 匹配\

   \" 匹配 "

   \' 匹配 '

九、优先级顺序

\转义符

()、(?:)、(?=)、[]圆括号或方括号

*、+、?、{n}、{n,}、{n,m}限定符

^、$、lb、\B位置和顺序

| 选择符,“或”运算

十、一些正则表达式

1.Windows路径

1. 最大路径长度:

1.1 最大路径长度默认是260个字符,如果是本地路径,可以指定的有效长度是256个字符,比如:"C:\有效字符串 ",实际C:\占用3个字符串,"有效字符串"后面会跟收尾符,3+256+1=260

1.2 如果想启用长路径,可以执行如下命令:

New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force

启用后,允许最大总路径长度为32767个字符的扩展长度路径。

2.文件命名限制:文件名不能包含下列9个任何字符:\ / : * ? " < > |

3.正则表达式及js代码验证

不校验路径长度的windows本地路径正则表达式为:

^([a-zA-Z]:)(\\[^/\\:*?"<>|]+\\?)*$

js验证代码如下(注意在代码中的路径\要写成\\转义):

var match = /^([a-zA-Z]:)(\\[^/\\:*?"<>|]+\\?)*$/;

var matchString = 'C:\\有效字符串';

console.log(match.test(matchString)); // ==> true

 

2.Linux路径

一个linux路径由"/"和目录(文件)名称两部分组成

路径的分类:

绝对路径:凡是从根开始的路径  /etc/

相对路径:凡是非根开始的路径  etc/passwd

使用pwd命令查看当前所在的绝对路径pwd:即print  work directory

在Linux下可以使用长文件名和目录名,可以给它们取任何名称,但是必须遵守以下规则:

  除了/外,所有的字符都可以;

  有些字符最好不用,如空格符、制表符、退格符和以下字符:? @ # $ & ( ) \ | ' ' " " 等(其中,/ 号已经在第一条被严格禁止了,()是英文括号);

  避免使用+-或.作为普通文件名的第一个字符(在Linux下以.开头的文件是属于隐藏文件);

  和Windows文件命名不一样的是,在Linux下文件名大小写敏感。

  另外,尽量避免使用中文和中文符号;

正则表达式及js代码验证

绝对路径正则表达式为:

^\/([^\/]+\/?)*$

js验证代码如下(注意在代码中的路径\要写成\\转义):

var match = /^\/([^\/]+\/?)*$/;

var matchString = '/home';

console.log(match.test(matchString)); // ==> true

3.IPv4地址

IP地址的长度为32位,分为4段,每段8位,用十进制数字表示,每段数字范围为0~255,段与段之间用英文句点“.”隔开。例如:某台计算机IP地址为10.11.44.100。

分析IP地址的组成特点:250-255、200-249、0-199。这三种情况可以分开考虑,

250-255:特点:三位数,百位是2,十位是5,个位是0~5,用正则表达式可以写成:25[0-5]

200-249:特点:三位数,百位是2,十位是0~4,个位是0~9,用正则表达式可以写成:2[0-4]\d

0-199:这个可以继续分拆,这样写起来更加简单明了.

0-9: 特点:一位数,个位是0~9,用正则表达式可以写成:\d

10-99: 特点:二位数,十位是1~9,个位是0~9,用正则表达式可以写成:[1-9]\d

100-199:特点:三位数,百位是1,十位是0~9,个位是0~9,用正则表达式可以写成:1\d{2}

于是0-99的正则表达式可以合写为[1-9]?\d,那么0-199用正则表达式就可以写成(1\d{2})|([1-9]?\d),

这样0~255的正则表达式就可以写成(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))

最后,前面3段加上句点.可以使用{3}重复得到,第4段再来一次同样的匹配,得到IPv4地址的正则表达式。

正则表达式及js代码验证

IPv4地址的正则表达式为:

^(((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))$

js验证代码如下:

var match = /^(((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))$/;

var matchString = '10.11.44.100';

console.log(match.test(matchString)); // ==> true

 

4.电脑端口号

端口号的地址是:0-65535

同理ip地址,将其拆分开来:

1位:0-9;2位:10-99;3位:100-999;4位:1000-9999;

5位:10000-59999;

5位特殊:60000-64999;65000-65499;65500-65529;65530-65535

 

 

 

 

小合并

^\d$

^[1-9]\d{1}$

^[1-9]\d{2}$

^[1-9]\d{3}$

^((\d)|([1-9]\d{1,3}))$

^[1-5]\d{4}$

 

 

 

^([1-5]\d{4})$

^6[0-4]\d{3}$

^65[0-4]\d{2}$

^655[0-2]\d{1}$

^6553[0-5]$

^((6[0-4]\d{3})|(65[0-4]\d{2})|(655[0-2]\d{1})|(6553[0-5]))$

 

 

 

 

^((\d)|([1-9]\d{1,3})|([1-5]\d{4})|(6[0-4]\d{3})|(65[0-4]\d{2})|(655[0-2]\d{1})|(6553[0-5]))$

正则表达式及js代码验证

端口号的正则表达式:

^((\d)|([1-9]\d{1,3})|([1-5]\d{4})|(6[0-4]\d{3})|(65[0-4]\d{2})|(655[0-2]\d{1})|(6553[0-5]))$

js验证代码如下:

var match = /^((\d)|([1-9]\d{1,3})|([1-5]\d{4})|(6[0-4]\d{3})|(65[0-4]\d{2})|(655[0-2]\d{1})|(6553[0-5]))$/;

var matchString = '1008';

console.log(match.test(matchString)); // ==> true

 

5.整数

正则表达式及js代码验证

零和非零开头的有或无符号的数字,不限制数字长度的正则表达式:

^([+-]?)((0)|([1-9][0-9]*))$

js验证代码如下:

var match = /^([+-]?)((0)|([1-9][0-9]*))$/;

var matchString = '1234567';

console.log(match.test(matchString)); // ==> true

 

6.浮点数(有一个小数点,或者无小数点)

正则表达式及js代码验证

整数部分零和非零的有或无符号,有或无小数点的数字,不限制数字长度的正则表达式:

^([+-]?)(((0)|([1-9][0-9]*))(.\d+)?)$

js验证代码如下:

var match = /^([+-]?)(((0)|([1-9][0-9]*))(.\d+)?)$/;

var matchString = '+0.01';

console.log(match.test(matchString)); // ==> true

 

7.URL

在WWW上,每一信息资源都有统一的且在网上的地址,该地址就叫URL(Uniform Resource Locator,统一资源定位器),它是WWW的统一资源定位标志,就是指网络地址。

语法

URL由三部分组成:资源类型、存放资源的主机域名、资源文件名。

也可认为由4部分组成:协议、主机、端口、路径

URL的一般语法格式为:protocol :// hostname[:port] / path / [:parameters][?query]#fragment

其中带方括号的为可选项

格式说明

protocol(协议)

指定使用的传输协议,下表列出 protocol 属性的有效方案名称。 最常用的是HTTP协议,它也是WWW中应用最广的协议。

file 资源是本地计算机上的文件。格式file:///,注意后边应是三个斜杠。

ftp 通过 FTP访问资源。格式 FTP://

gopher 通过 Gopher 协议访问该资源。

http 通过 HTTP 访问该资源。 格式 HTTP://

https 通过安全的 HTTPS 访问该资源。 格式 HTTPS://

mailto 资源为电子邮件地址,通过 SMTP 访问。 格式 mailto:

MMS 通过 支持MMS(流媒体)协议的播放该资源。(代表软件:Windows Media Player)格式 MMS://

ed2k 通过 支持ed2k(专用下载链接)协议的P2P软件访问该资源。(代表软件:电驴) 格式 ed2k://

Flashget 通过 支持Flashget:(专用下载链接)协议的P2P软件访问该资源。(代表软件:快车) 格式 Flashget://

thunder 通过 支持thunder(专用下载链接)协议的P2P软件访问该资源。(代表软件:迅雷) 格式 thunder://

news 通过 NNTP 访问该资源。

hostname(主机名)

是指存放资源的服务器的域名系统(DNS) 主机名或 IP 地址。有时,在主机名前也可以包含连接到服务器所需的用户名和密码(格式:username:password@hostname)。

port(端口号)

整数,可选,省略时使用方案的默认端口,各种传输协议都有默认的端口号,如http的默认端口为80。如果输入时省略,则使用默认端口号。有时候出于安全或其他考虑,可以在服务器上对端口进行重定义,即采用非标准端口号,此时,URL中就不能省略端口号这一项。

path(路径)

由零或多个“/”符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。

parameters(参数)

这是用于指定特殊参数的可选项,有服务器端程序自行解释。

query(查询)

可选,用于给动态网页(如使用CGI、ISAPI、PHP/JSP/ASP/ASP.NET等技术制作的网页)传递参数,可有多个参数,用“&”符号隔开,每个参数的名和值用“=”符号隔开。

fragment(信息片断)

字符串,用于指定网络资源中的片段。例如一个网页中有多个名词解释,可使用fragment直接定位到某一名词解释。

 

案例说明:

协议、主机、端口、路径

小宝的宝呢-CSDN博客

协议(HTTP):规定数据传输的方式

域名(IP):在网络环境中找到主机-------用 :// 与协议分隔开

端口(port):(常省略)在网络主机上,标识一个进程(应用程序)------用  :  与域名分隔开

资源路径:标识网络资源(文件,图片,音视频,变量...)------用 :// 与端口分隔开

查询参数:传递给资源路径对应的数据------用  ?  与资源路径分隔开,查询内部参数用  &  分隔多个键值对

百度一下,你就知道

协议:https

域名(IP):www.baidu.com

端口(port):443

资源路径:当没有资源路径时,可以默认是  /  ,在各个网站通常有默认的路径如index.html

 协议,域名,端口,虚拟目录,文件名,锚,参数

protocol :// hostname[:port] / path / [;parameters][?query]#fragment

协议protocol:一般为http或https

域名hostname:一个URL中,也可以使用IP地址作为域名使用

端口port:跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符。

端口不是一个URL必须的部分,如果省略端口部分,将采用默认端口

虚拟目录path:从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分

虚拟目录也不是一个URL必须的部分     

文件名;parameters:从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。

文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名

锚fragment:从“#”开始到最后,都是锚部分。

锚部分也不是一个URL必须的部分

参数query:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。

注意: URL 只能使用 ASCII 字符集来通过因特网进行发送。 也就是说URL只能使用英文字母、阿拉伯数字和某些标点符号,不能使用其他文字和符号 。

 

匹配URL的正则表达式(js代码)

var match = /^((([Hh][Tt])|(Ff))[Tt][Pp][Ss]?):\/\/[\w\-]+(\.[\w\-]+)+([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?$/;

匹配:

(1)、直接匹配域名地址:

var matchString = 'https://i.cnblogs.com/';

console.log(match.test(matchString)); // ==> true

 

(2)、匹配链接含(*.htm,*.html,*.php,*.aspx...)后缀的地址:

var matchString = 'https://i.cnblogs.com/EditPosts.aspx';

console.log(match.test(matchString)); // ==> true

 

(3)、匹配含参数的地址:

var matchString = 'https://i.cnblogs.com/EditPosts.aspx?opt=1';

console.log(match.test(matchString)); // ==> true

 

使用说明:

(1)、地址必须以http/https/ftp/ftps开头(不区分大小写)

(2)、地址不能包含双字节符号或非链接特殊字符。

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

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

相关文章

CVPR2024《RMT: Retentive Networks Meet Vision Transformers》论文阅读笔记

论文链接&#xff1a;https://arxiv.org/pdf/2309.11523 代码链接&#xff1a;https://github.com/qhfan/RMT 引言 ViT近年来在计算机视觉领域受到了越来越多的关注。然而&#xff0c;作为ViT的核心模块--自注意力缺乏空间先验知识。此外&#xff0c;自注意力的二次计算复杂度…

oracle 12c GI卸载流程

集群节点停止服务 [crsctl stop crs -f grid运行deinstall [rootprimary1 bin]# su - grid [gridprimary1 ~]$ cd $ORACLE_HOME/deinstall [gridprimary1 deinstall]$ ls bootstrap_files.lst bootstrap.pl deinstall deinstall.pl deinstall.xml jlib readme.txt …

电机控制系列模块解析(25)—— 过压抑制与欠压抑制

一、概念解析 变频器作为一种重要的电机驱动装置&#xff0c;其内置的保护功能对于确保系统安全、稳定运行至关重要。以下是关于变频器过压抑制、欠压抑制&#xff08;晃电抑制&#xff09;、发电功率限制、电动功率限制等保护功能的详细说明&#xff1a; 过压抑制 过压抑制是…

基于python flask的疾病数据采集与可视化大屏,实现关联规则算法的治疗方法分析

背景 基于Python Flask的疾病数据采集与可视化大屏&#xff0c;旨在实现对疾病数据的采集、分析和可视化展示&#xff0c;为医疗领域提供决策支持和治疗方法分析。其中&#xff0c;关联规则算法被应用于治疗方法分析&#xff0c;旨在发现不同治疗方式之间的关联性和规律性&…

【RuoYi】使用代码生成器完成CRUD操作

一、前言 前面&#xff0c;介绍了如何下载和启动我们的RuoYi框架。为了让小伙伴们认识到ruoyi的强大&#xff0c;那么这篇博客就介绍一下如何使用ruoyi的代码生成器&#xff0c;自动生成前端页面以及后端的对应数据库表的CRUD操作&#xff01;&#xff01;&#xff01;真的很强…

填补领域空白!TerDiT:首次探索大规模DiT模型量化问题(MMLab出品)

论文链接&#xff1a;https://arxiv.org/pdf/2405.14854 项目链接&#xff1a;https://github.com/Lucky-Lance/TerDiT 最近在大规模预训练的文本到图像扩散模型方面的发展显著提高了高保真图像的生成能力&#xff0c;特别是基于transformer架构的扩散模型&#xff08;DiTs&a…

linux中使用gdb调试c++的dump文件

1 查看系统是否开启dump生成 0表示没开启 ulimit -c 但是这个只是针对当前这个连接&#xff0c;如果想要永久修改可以修改配置文件&#xff1a;vim /etc/profile&#xff0c;然后添加上面的命令ulimit - c unlimited.然后执行source /etc/profile或者重启使刚刚的配置可以…

selenium学习笔记

什么是selenium 比较官方的解释 Selenium是一个自动化测试工具&#xff0c;用于在Web应用程序中模拟用户操作。它提供了一组API&#xff0c;可以通过编程方式控制浏览器&#xff0c;并模拟用户的交互行为&#xff0c;例如点击、输入文本和导航等。Selenium支持多种编程语言&a…

让AI学相机对焦: Learning to AutoFocus

前言 分析来自谷歌发表在 CVPR 2020 上的论文 Learning to Autofocus &#xff1a;https://arxiv.org/pdf/2004.12260 目前网上对这篇论文的分析较少&#xff0c;有的分析并没有指出关键点&#xff0c;如&#xff1a;论文解读&#xff1a; Learning to AutoFocus-CSDN博客&am…

LeetCode115:不同的子序列

题目描述 给你两个字符串 s 和 t &#xff0c;统计并返回在 s 的 子序列 中 t 出现的个数&#xff0c;结果需要对 109 7 取模。 代码 /*dp[i][j]&#xff1a;以i为结尾的s中有以j为尾的t的个数递推公式&#xff1a;当s[i - 1] 与 t[j - 1]相等时&#xff0c;dp[i][j]可以有两…

Trie字符串统计-java

Trie&#xff0c;又称前缀树或字典树&#xff0c;是一种有序树&#xff0c;用于保存关联数组&#xff0c;其中的键通常是字符串。 目录 前言☀ 一、Trie字符串统计☀ 二、算法思路☀ 1.Trie树定义&#x1f319; 2.变量解释&#x1f319; 3.插入操作&#x1f319; 4.Trie树查找操…

以果决其行,只为文化的传承

从他们每一个人的身上&#xff0c;我们看到传神的东西&#xff0c;就是他们都能用结果&#xff0c;去指引自己前进的方向&#xff0c;这正是我要解读倪海厦老师的原因&#xff0c;看倪海厦2012年已经去世&#xff0c;到现在已经十几年时间了&#xff0c;但是我们看现在自学中医…

【设计模式深度剖析】【6】【结构型】【外观模式】| 以电脑开关按钮为例,并结合微服务架构的API网关加深理解

&#x1f448;️上一篇:桥接模式 设计模式-专栏&#x1f448;️ 目 录 外观模式&#xff08;Facade Pattern&#xff09;定义英文原文直译如何理解呢&#xff1f;字面理解代码实现中的理解生活案例&#xff1a;操作多功能料理机典型案例分析&#xff1a;API网关与外观模式 外…

STM32H750外设之ADC连续转换模式

目录 概述 1 ADC数据转换模式介绍 1.1 功能介绍 1.2 ADCx_CFGR 2 连续转换模式 (CONT1) 2.1 功能介绍 2.2 连续转换模式 2.3 转换序列完成 3 注意问题 概述 本文主要介绍STM32H750外设之ADC连续转换模式的相关内容&#xff0c;包括与之相关的寄存器的控制位bit。每个…

详解makefile中的foreach

在 Makefile 中&#xff0c;foreach 函数用于迭代处理一个以空格分隔的列表&#xff0c;并针对列表中的每个元素执行相同的操作。这个函数通常用于循环处理一组变量或文件名&#xff0c;并执行相同的规则或命令。 语法&#xff1a; makefile Copy Code $(foreach var, list, …

四川古力未来科技抖音小店安全靠谱,购物新体验

在数字化浪潮席卷而来的今天&#xff0c;电商行业蓬勃发展&#xff0c;各种线上购物平台如雨后春笋般涌现。其中&#xff0c;抖音小店凭借其独特的短视频直播购物模式&#xff0c;迅速赢得了广大消费者的青睐。而四川古力未来科技抖音小店&#xff0c;更是以其安全靠谱、品质保…

单点11.2.0.3备份恢复到单点11.2.0.4

保命法则&#xff1a;先备份再操作&#xff0c;磁盘空间紧张无法备份就让满足&#xff0c;给自己留退路。 场景说明&#xff1a; 1.本文档的环境为同平台、不同版本&#xff08;操作系统版本可以不同&#xff0c;数据库小版本不同&#xff09;&#xff0c;源机器和目标机器部…

广东省保健食品行业协会批复成为“世界酒中国菜”活动指导单位

广东省保健食品行业协会正式批复成为“世界酒中国菜”系列活动指导单位&#xff0c;共促餐饮文化交流发展 近日&#xff0c;广东省保健食品行业协会正式批复荐酒师国际认证&#xff08;广州&#xff09;有限公司&#xff0c;成为备受瞩目的“世界酒中国菜”系列活动的指导单位…

【Linux】初识Linux和Linux环境配置

1.什么是Linux操作系统 说到电脑系统 我想有大多数人会脱口而出&#xff1a;windows、mac 是的&#xff0c;这也是如今市场上主流的两种操作系统。 但是对于IT相关的人士来说&#xff0c;还有一种系统也是必须有姓名 那就是Linux Linux&#xff0c;Linux Is Not UniX 的…

Python Hydra:现代开发者的配置管理神器

更多Python学习内容&#xff1a;ipengtao.com Hydra是一个用于配置管理的强大工具&#xff0c;旨在帮助开发者处理复杂的应用程序配置。它支持多层次的配置合并、命令行覆盖、动态配置和实验管理。Hydra特别适用于需要处理大量配置参数的机器学习和深度学习项目。本文将详细介绍…