`
再逢山水
  • 浏览: 158083 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Javascript正则表达式完全学习手册

阅读更多
正则表达式看起来很吓人,不容易让人亲近,但它的确很好用,可以很大程度上提高你的开发效率。本文从零开始介绍了应如何学习正则表达式。文中范例主要为JavaScript。

正则表达式可以很恐怖,真得很恐怖。幸运的是,一旦记住每个符号所表达的意思,恐惧就会快速消退。如果你对正则表达式一无所知,正如文章标题,那你又就有很多东西要学了。下面让我们马上开始吧。

基础学习

想要高效地学习和掌握正则表达式的关键是花一天的时间记住所有符号。这可能是我所能提供的最好的建议。坐下来,做些记忆卡片,然后记住它们。以下为最常见的一些符号:
. - 匹配任意字符,换行符除外(如果 dotall 为 false)。
* - 该符号前面的字符,匹配 0 次或多次。
+ - 该符号前面的字符,匹配 1次或多次
? - 该符号前面的字符是可选的。匹配 0 次或 1 次。
\d - 匹配任何单个数字。
\w - 匹配任何一个字符(包括字母数字以及下划线)。
[XYZ] - 匹配字符组中的任意一个字符,即 X、Y、Z 中的任意一个。
[XYZ]+ - 匹配字符组中的一个或多个字符。
$ - 匹配字符串结束的位置。
^ - 匹配字符串开始的位置。
[^a-z] - 当出现在字符类中时,^ 表示 NOT(非);对于该示例,表示匹配任何非小写字母。



很闷吧,不过还是记住它们,记住之后你会知道好处的。

工具

你认为一个表达式是正确的,非常正确,但就是无法得到想要的结果,这时你可能会产生将头发拔光的冲动。去下载 RegExr 桌面应用程序吧,这个对你是必不可少的,而且玩起来非常有趣的。它提供实时检查,还有一个侧边栏,里面包含了每个字符的定义和用户,非常详细。

正则表达式和 JavaScript

1. Test()

这个方法接受单个字符串参数,然后返回一个布尔值,该值表明是否找到一个批评。如果你不需要对特定的匹配结果进行操作,比如,验证用户名,“test”方法已足够完成这个任务。

示例

var username = 'JohnSmith';    
alert(/[A-Za-z_-]+/.test(username)); // returns true

   在上面的代码中,我们首先声明一个正则表达式,表示仅允许大写或小写字母、下划线和连字符。将这些可接受的字符放在括号中,就指定了一个字符组。紧随其后的 + 号表示我们想要正在寻找的是一个或多个前述字符组中的字符。然后使用该范式对变量“JohnSmith”进行测试。由于存在匹配,浏览器的显示框中将显示 true。

2. Split()

你可能对 split 方法已经很熟了。该方法接受单个正规表达式,表示在哪里进行“分割”。请注意,如果喜欢,你还可以使用字符串。

var str = 'this is my string';    
alert(str.split(/\s/)); // alerts "this, is, my, string"

   上面代码中的 \s 表示单个空格,通过它,我们将字符串分割为一个数组。如果想要访问某个特定的值,使用相应的索引即可。

var str = 'this is my this string';   
alert(str.split(/\s/)[3]); // alerts "string"  

3. replace()

可能你已经想到了,replace 方法可以用来将文本中的一部分(由字符串或正则表达式表示)替换为不同的字符串。

示例
如果想要将“Hello, World”改为“Hello, Universe”,可以使用下面的代码:

var someString = 'Hello, World';    
someString = someString.replace(/World/, 'Universe');    
alert(someString); // alerts "Hello, Universe"

   应留意的是,对于这个简单的示例,我们本来可以简单的使用.replace('World', 'Universe')。另外,使用 replace 方法不会自动重写变量的值,我们必须将返回值再次分配给这个变量:someString。

示例 2
再举一个例子,假设用户要在我们的网站注册一个账号,我们可能想要提供一些基础的安全预防措施。也许我们想要留下他们的用户名,而删除其他任何符号,引号、分号等等。对于 JavaScript 和正则表达式,执行这类任务是桩琐碎的小事情。

var username = 'J;ohnSmith;@%';    
username = username.replace(/[^A-Za-z\d_-]+/, '');    
alert(username); // JohnSmith;@%

   看到最后生成的显示值,有人可能会想,上面的代码有错误。事实并非如此。你仔细看看,会发现字母“J”后的分号被删除了,正如我们所期望的那样。为了通知引擎继续搜索字符串查找更多匹配,我们可以做结束的斜杠后面直接添加一个“g”,这个修饰符或标记表示“global(全局)”。修改后的代码如下所示:

var username = 'J;ohnSmith;@%';
username = username.replace(/[^A-Za-z\d_-]+/g, '');    
alert(username); // alerts JohnSmith

   现在,正则表达式搜索整个字符串,替换所有必要的字符。让我们看看关键的表达式(.replace(/[^A-Za-z\d_-]+/g, '');),要注意,括号内的向上箭头(即 ^)非常重要。当放在字符组中时,该符号表示“找到所有不是……”。现在回头在看看这个代码,它表示,找到所有不是字母、数字(由 \d 表示)、下划线或连字符的符号;如果找到一个匹配,将其替换为空,事实上就是删除该字符。

4. Match()

与test方法不同,match() 返回一个包含所有找到的批评的数组。

示例
var name = 'JeffreyWay';    alert(name.match(/e/)); // alerts "e"
   上面的代码将显示一个字母“e”。但是,在字符串“JeffreyWay”中实际上包含2个 e。同样,这次我们还是要使用修饰符“g”来声明一个全局搜索。

var name = 'JeffreyWay';    
alert(name.match(/e/g)); // alerts "e,e"


如果想要显示数组中这些特定值中的一个,可以做括号中引用想要的索引。

var name = 'JeffreyWay';    
alert(name.match(/e/g)[1]); // alerts "e"
  

示例 2
让我们看下一个示例,确保我们对它的理解是正确的。

var string = 'This is just a string with some 12345 and some !@#$ mixed in.';    
alert(string.match(/[a-z]+/gi)); //alerts "This,is,just,a,string,with,some,and,some,mixed,in" 


    在这个正则表达式中,我们创建了一个范式,可匹配一个或多个大写或小写字母。这多亏了“i”修饰符。除外,我们还加上了“g”来声明进行全局搜索。上面的代码将显示“This,is,just,a,string,with,some,and,some,mixed,in.”然后,如果想要获取变量数组中这些值中的某一个,我们只需引用相应的索引即可。

var string = 'This is just a string with some 12345 and some !@#$ mixed in.';    
var matches = string.match(/[a-z]+/gi);    
alert(matches[2]); // alerts "just"   分割电子邮件地址


为了练习,我们试着将一个电子邮件地址(nettuts@tutsplus.com)分割为相应的两部分:用户名和域名,即 nettuts 和tutsplus。

var email = 'nettuts@tutsplus.com';    
alert(email.replace(/([a-z\d_-]+)@([a-z\d_-]+)\.[a-z]{2,4}/ig, '$1, $2')); // alerts "nettuts, tutsplus"

   如果对于正则表达式,你还是新手,上面的代码可能会看起来有点吓人。不用担心,第一次看到都会感到“恐怖”。一旦将它分解为一个一个小子集,你会发觉其实非常简单。下面让我们一条一条进行分析:

.replace(/([a-z\d_-]+)   从中间开始看,我们要搜索任何字母、数字、下划线或连字符,并且匹配一次或多次(+)。无论匹配是上面,我们想要访问其值,所以将其放到括号中。这样,我们稍后可以引用这个匹配的子集。

@([a-z\d_-]+)   紧接着前一个匹配,我们看到 @ 符号,然后是有一组一个或多个字母、数字、下划线和连字符。同样,我们将其放到括号内,以便稍后访问。

\.[a-z]{2,4}/ig,   继续找,我们看到一个点。因为在正则表达式中,句点可表示任何字符(有时换行符除外),因此必须使用“\”进行转义。最后一部分是用于查找“.com”。我们知道,大多数域名,如果不是所有,其后缀为 2 到 4 个字符(com、edu、net、name 等等)。如果找到具体的范围,我们可以先行使用更常规的符号,如 * 或 +。不过,我们在这里是将2个数字放到一个大括号中,分别表示最大值和最小值。

'$1, $2')   这个最后一部分表示replace方法的第二个参数,或者我们想要将匹配字符集替换为的对象。在这里,我们使用 $1 和 $2 分别来引用保存在第一个和第二个括号中的值。对于这个特定示例, $1 指向 nettuts,$2 指向 tutsplus。

创建自己的位置对象

作为最后的一个项目,我们将创建位置对象。位置对象向用户提供有关当前页面的信息:href、协议、地址、端口等。请注意,这里仅仅是作为练习之用。对于真正的网址,使用已有的位置对象即可。

首先我们创建位置函数,该函数接受单个参数,该参数表示我们想要“解码”的网址,我们将其称为“loc”。

function loc(url) { }   现在,我们可以按照下面的方式调用它,并传入一个乱七八糟的 url:

var l = loc('http://www.somesite.com?somekey=somevalue&anotherkey=anothervalue#theHashGoesHere');

下一步,我们需要返回包含多个方法的对象。

function loc(url) {
        return {}   
}  

搜索(search)

我们不会创建所有方法,但我们会模仿其中几个。第一个是“search”。使用正则表达式,我们将要搜索 url 并返回查询字符串中的所有内容。

return {
        search : function() {
            return url.match(/\?(.+)/i)[1]; //returns "somekey=somevalue&anotherkey=anothervalue#theHashGoesHere"
      }
    }

   在上面的代码中,我们使用了传入的 url,试图使用我们的正则表达式对其进行匹配。这个正则表达式在整个字符串中搜索问号,问号表示查询字符串(querystring)的开始。在这个位置,我们需奥获取其余的字符,这就是将(.+)放入括号的原因。最后,我们需要返回那个字符区块,因此,使用[1]来定位它。

哈希值(Hash)

现在我们将创建一个方法,返回 url 的哈希值,或者 # 号后面的内容。

hash : function() {
        return url.match(/#(.+)/i)[1]; // returns "theHashGoesHere"
},


   这次,我们搜索 # 号,同样,使用括号获取后面的字符,并使用 [1] 指向那个特定的子集。

协议

protocol 方法应返回,页面所用的协议,可能你已经猜到了。这种协议通常为 http 或 https。

protocol : function() {
        return url.match(/(ht|f)tps?:/i)[0]; //returns 'http:'
},
  

这一个稍微更加复杂一点,因为存在几个选项:http、https 和 ftp。

虽然可以使用这样的格式 (http|https|ftp),但使用 (ht|f)tps? 更为简洁,表示我们首先查找“ht”或“f”字符,下一步,匹配“tp”字符。最后的“s”是可选的,所以我们加了一个问号,表示问号前的字符出现零次或一次。

Href

这个是最后一个方法,返回页面的 url。

href : function() {
        return url.match(/(.+\.[a-z]{2,4})/ig); //returns "http://www.somesite.com"
}

   这里,我们对所有字符进行匹配,直到找到一个点号,这个点号后面有 2 - 4 个字符(表示 com、au、edu、name 等等)。重要的是意识到,对于这些表达式,我们可以写得很复杂也可以写得很简单,这在于我们要求有多严格。

一个简单的函数

function loc(url) {
        return {
            search : function() {
                return url.match(/\?(.+)/i)[1];
            },
            hash : function() {
                return url.match(/#(.+)/i)[1];
            },
            protocol : function() {
                return url.match(/(ht|f)tps?:/)[0];
            },
            href : function() {
                return url.match(/(.+\.[a-z]{2,4})/ig);
            }
        }
    }

使用上面这个函数,我们可以很简单地显示网址的每个部分:

var l = loc('http://www.net.tutsplus.edu?key=value#hash');        alert(l.href()); // http://www.net.tutsplus.com
alert(l.protocol()); 
分享到:
评论

相关推荐

    TinyYolo2实时视频流物体检测ONNX模型

    TinyYolo2实时视频流物体检测ONNX模型 运行 ONNX 模型,并结合 OpenCV 进行图像处理。具体流程包括: 1. 加载并初始化 ONNX 模型。 2. 从摄像头捕获实时视频流。 3. 对每一帧图像进行模型推理,生成物体检测结果。 4. 在界面上绘制检测结果的边界框和标签。

    chromedriver-linux64-134.0.6998.23(Beta).zip

    chromedriver-linux64-134.0.6998.23(Beta).zip

    Web开发:ABP框架4-DDD四层架构的详解

    Web开发:ABP框架4-DDD四层架构的详解

    chromedriver-linux64-135.0.7029.0(Canary).zip

    chromedriver-linux64-135.0.7029.0(Canary).zip

    (参考项目)MATLAB人脸门禁系统.zip

    实现人脸识别的考勤门禁系统可以分为以下步骤: 1. 采集人脸图像数据集:首先需要采集员工的人脸图像数据集,包括正面、侧面等多个角度的图像。可以使用MATLAB中的图像采集工具或者第三方库进行采集。 2. 预处理人脸图像数据:对采集到的人脸图像数据进行预处理,包括人脸检测、人脸对齐、人脸裁剪等操作。MATLAB提供了相关的图像处理工具箱,可以用于实现这些处理步骤。 3. 特征提取与特征匹配:使用人脸识别算法提取人脸图像的特征,比如使用人脸识别中常用的特征提取算法如Eigenfaces、Fisherfaces或者基于深度学习的算法。然后将员工的人脸数据与数据库中的人脸数据进行匹配,判断是否为注册员工。 4. 考勤记录与门禁控制:如果人脸匹配成功,系统可以记录员工的考勤时间,并且控制门禁系统进行开启。MATLAB可以与外部设备进行通信,实现门禁控制以及考勤记录功能。

    rdtyfv、ijij

    yugy

    企业IT治理体系规划.pptx

    企业IT治理体系规划.pptx

    基于Nutz、SSH、SSM的新闻管理系统.zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用

    基于多目标粒子群算法的冷热电联供综合能源系统优化调度与运行策略分析,基于多目标粒子群算法的冷热电联供综合能源系统优化调度与运行策略分析,MATLAB代码:基于多目标粒子群算法冷热电联供综合能源系统运行

    基于多目标粒子群算法的冷热电联供综合能源系统优化调度与运行策略分析,基于多目标粒子群算法的冷热电联供综合能源系统优化调度与运行策略分析,MATLAB代码:基于多目标粒子群算法冷热电联供综合能源系统运行优化 关键词:综合能源 冷热电三联供 粒子群算法 多目标优化 参考文档:《基于多目标算法的冷热电联供型综合能源系统运行优化》 仿真平台:MATLAB 平台采用粒子群实现求解 优势:代码注释详实,适合参考学习,非目前烂大街的版本,程序非常精品,请仔细辨识 主要内容:代码构建了含冷、热、电负荷的冷热电联供型综合能源系统优化调度模型,考虑了燃气轮机、电制冷机、锅炉以及风光机组等资源,并且考虑与上级电网的购电交易,综合考虑了用户购电购热冷量的成本、CCHP收益以及成本等各种因素,从而实现CCHP系统的经济运行,求解采用的是MOPSO算法(多目标粒子群算法),求解效果极佳,具体可以看图 ,核心关键词: 综合能源系统; 冷热电三联供; 粒子群算法; 多目标优化; MOPSO算法; 优化调度模型; 燃气轮机; 电制冷机; 锅炉; 风光机组; 上级电网购售电交易。,基于多目标粒子群算法的CCHP综合

    DSP28379D串口升级方案:单核双核升级与Boot优化,C#上位机开发串口通信方案,DSP28379D串口升级方案:单核双核升级与Boot优化,C#上位机开发实现串口通信,DSP28379D串口升

    DSP28379D串口升级方案:单核双核升级与Boot优化,C#上位机开发串口通信方案,DSP28379D串口升级方案:单核双核升级与Boot优化,C#上位机开发实现串口通信,DSP28379D串口升级方案 单核双核升级,boot升级,串口方案。 上位机用c#开发。 ,DSP28379D; 串口升级方案; 单核双核升级; boot升级; 上位机C#开发,DSP28379D串口双核升级方案:Boot串口升级技术使用C#上位机开发

    基于ASP.NET MVC+三层架构和EntityFramework的微博门户网站项目.zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用

    基于PLC的双层自动门控制:光电传感触发,有序开关与延时功能实现,附程序、画面及参考文档 ,基于PLC的双层自动门控制系统:精准控制,保障无尘环境;门间联动,智能安防新体验 ,基于plc的双层自动门控

    基于PLC的双层自动门控制:光电传感触发,有序开关与延时功能实现,附程序、画面及参考文档。,基于PLC的双层自动门控制系统:精准控制,保障无尘环境;门间联动,智能安防新体验。,基于plc的双层自动门控制系统,全部采用博途仿真完成,提供程序,画面,参考文档,详情见图。 实现功能(详见上方演示视频): ① 某房间要求尽可能地保持无尘,在通道上设置了两道电动门,门1和门2,可通过光电传感器自动完成门的打开和关闭。 门1和门2 不能同时打开。 ② 第 1 道门(根据出入方向不同,可能是门 1 或门 2),是由在通道外的开门者通过按开门按钮打开的,而第 2 道门(根据出入方向不同,可能是门 1 或门 2 )则是在打开的第 1 道门关闭后自动地打开的(也可以由通道内的人按开门按钮来打开第2 道门)。 这两道门都是在门开后,经过 3s 的延时而自动关闭的。 ③ 在门关闭期间,如果对应的光电传感器的信号被遮断,则门立即自动打开。 如果在门外或者在门内的开门者按对应的开门按钮时,立即打开。 ④ 出于安全方面的考虑,如果在通道内的某个人经过光电传感器时,对应的门已经打开,则通道外的开门者可以不按开门按钮。

    黑马程序员Java品达通用权限项目,基于SpringCloud SpringBoot 的微服务框架的权限管理解决方案.zip

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用

    DeepSeek+DeepResearch-让科研像聊天一样简单

    DeepSeek+DeepResearch——让科研像聊天一样简单 (1)DeepSeek如何做数据分析? (2)DeepSeek如何分析文件内容? (3)DeepSeek如何进行数据挖掘? (4)DeepSeek如何进行科学研究? (5)DeepSeek如何写综述? (6)DeepSeek如何进行数据可视化? (7)DeepSeek如何写作润色? (8)DeepSeek如何中英文互译? (9)DeepSeek如何做降重? (10)DeepSeek论文参考文献指令 (11)DeepSeek基础知识。

    基于springboot+uniapp实现的蛋糕商城小程序.zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用

    jdepend-demo-2.9.1-10.el7.x64-86.rpm.tar.gz

    1、文件内容:jdepend-demo-2.9.1-10.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/jdepend-demo-2.9.1-10.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊

    关爱儿童公益网站 web 项目.zip

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行;功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用

    MATLAB实现WOA-LSTM鲸鱼算法优化长短期记忆网络数据分类预测(含模型描述及示例代码)

    内容概要:本文档详细介绍了如何利用 MATLAB 实现鲸鱼优化算法 (WOA) 和长短期记忆网络 (LSTM) 相结合的技术——WOA-LSTM,在数据分类和预测领域的应用。文章首先概述了LSTM在网络训练中超参数依赖的问题以及WOA作为一种新颖的全局优化算法的优势。接着阐述了该项目的研究背景、目的及其重要意义,并深入讨论了项目面临的六大主要挑战,从模型优化到超参数空间管理。文档特别强调WOA-LSTM融合所带来的性能提升、降低计算复杂度的能力及其实现自动化的超参数优化流程。除此之外,文中展示了模型的应用广泛性,覆盖了从金融市场的股票预测到智能制造业的各种实际场景,并提供了具体的模型架构细节和代码实例,以帮助理解模型的工作原理和技术要点。 适合人群:具有一定编程技能的研究人员、工程师和科学家们,尤其是对深度学习技术和机器学习感兴趣的专业人士。 使用场景及目标:该文档的目标是向用户传授使用MATLAB实现WOA-LSTM进行复杂数据分类和预测的方法论,旨在指导读者理解和掌握如何利用WOA进行超参数寻优,从而改善LSTM网络性能。 其他说明:通过阅读这份文档,使用者不仅能够获得有关WOA-LSTM技术的具体实现方式的知识,而且还可以获取关于项目规划和实际部署过程中的宝贵经验。

    tomcat安装及配置教程.md

    tomcat安装及配置教程.md

    **MATLAB下微电网两阶段鲁棒优化经济调度策略:基于CCG算法与min-max-min结构求解**,MATLAB微电网两阶段鲁棒优化经济调度程序:构建min-max-min结构模型,实现恶劣场景下

    **MATLAB下微电网两阶段鲁棒优化经济调度策略:基于CCG算法与min-max-min结构求解**,MATLAB微电网两阶段鲁棒优化经济调度程序:构建min-max-min结构模型,实现恶劣场景下的低成本调度,灵活调整调度保守性,利用列约束生成算法求解,MATLAB代码:微电网两阶段鲁棒优化经济调度程序 关键词:微网优化调度 两阶段鲁棒 CCG算法 经济调度 参考文档:《微电网两阶段鲁棒优化经济调度方法》 仿真平台:MATLAB YALMIP+CPLEX 优势:代码注释详实,出图效果非常好(具体看图),非目前烂大街版本,请仔细辨识 主要内容:构建了微网两阶段鲁棒调度模型,建立了min-max-min 结构的两阶段鲁棒优化模型,可得到最恶劣场景下运行成本最低的调度方案。 模型中考虑了储能、需求侧负荷及可控分布式电源等的运行约束和协调控制,并引入了不确定性调节参数,可灵活调整调度方案的保守性。 基于列约束生成算法和强对偶理论,可将原问题分解为具有混合整数线性特征的主问题和子问题进行交替求解,从而得到原问题的最优解。 最终通过仿真分析验证了所建模型和求解算法的有效性,具体内容可自行查

Global site tag (gtag.js) - Google Analytics