主要参考:《精通正则表达式 第三版》 jeffrey E.F Friedl 著
本系列并不是专门针对java语言介绍正则表达式使用的,而是从正则表达式本身的范畴介绍正则的基础,原理,效率,最后是某语言(java)中如何引入使用正则特性。相信看完后会对正则有个不一样的全面认识。当然,理论掌握后还需多写才能化为己有。
正则表达式(Regular Expression)是强大,便捷,高效的文本处理工具。正则表达式本身,加上如同一门袖珍编程语言的通用模式表示法(general pattern notation), 赋予使用者描述和分析文本的能力。配合上特定工具提供的额外支持,
正则表达式能够添加,删除,分离,叠加,插入和修正各种类型的文本和数据。
完整的正则表达式由
两种字符构成。特殊字符称为“
元字符(meta characters)”,其他为
“文字(literal)”或者普通文本字符(normal text characters)。
1.1 元字符
1.1.1 行的起始和结束
或许最容易理解的元字符就是
脱字符号“^”和美元符号“$”了。在检查一行文本时,
脱字符号代表一行的开始,美元符号代表一行的结束。后面讲到正则的流派,模式时我们会认识到,"^"可能还会匹配换行符。
我们最好能养成按照
字符来理解正则表达式的习惯。如“^cat”
不要理解成:以cat开头的行。
而是理解成:以c作为一行的第一个字符,紧接着一个a,然后是一个t的文本。这两种理解的结果并无差异,但按照字符来解读更易于明白新遇到的正则表达式的内部逻辑。
脱字符号和美元符号的特别之处在于,他们匹配的是一个位置,而不是具体的字符。也就是说他们不占用任何位置。
“^$”匹配的是什么呢?其实就是行开头,接着就是行末尾。应用意义就是匹配一个空行,没有任何字符,包括空白字符。
1.1.2 字符组
匹配若干字符之一。如果我们需要搜索的是单词“grey”,同时又不确定它是否协作“gray”,就可以使用正则表达式结构体“[…]”.它容许使用者列出在某处期望匹配的字符,通常被称作
字符组(character class)。所以上面描述的不确定情况就可以用”gr[ea]y”,意思就是先找到g,跟着是一个r,然后是一个a或e,最后是一个y。
注意:在字符组以外,普通字符(如gr[ae]y中的g和r)都有
接下来是(and then)的意思,这与字符组内部的情况是完全相反的。字符组的内容是在同一个位置能够匹配的若干字符,所以他的意思是
“或”。如“[0123456789]”就是匹配1到9之间的任意一个数字。如果“<H[1234]>”就是用来匹配<H1>,<H2>,<H3>,<H4>。
在字符组内部有字符组元字符(character-clas metacharacter):“-”(连字符)表示一个范围:“<H[1234]>”与“<H[1-4]>”是完全一样的。[0-9]和[a-z]是常用的匹配数字和小写字母的简便方式。多重范围也是允许的,如“[0123456789abcdeABCDE]“可以写作”[0-9a-eA-E]“,
注意只有在字符组内部,连字符才是元字符。否则他就是只能匹配普通的连字符号。
连字符还有一个例外,即使在字符组内部,如果连字符出现在字符组的
开头(或排除型字符组的开头,下面会讲,如[^-]),那也不是元字符而只是一个普通字符。同样的道理,
问号和点号(后面会讲到这两个元字符)通常被当做元字符处理,但在字符组里则不是如此。只有连字符和^(下面马上讲到,是排除字符)才可能是字符组里的元字符(
但是转义符,字符组简记法仍然有效,即[\da-zA-Z]或[^\da-zA-Z]或[\\"]中的\仍然有转义的含义,\d仍然代表数字,\\"仍然代表字符串中的“\"”单独的\不会匹配任何字符,\\会匹配字符'\')。相当于字符组内部有一个自己独立的小世界,有自己的规则。
1.1.3 排除型字符组
用“[^…]”取代“[…]”,这个字符组就会匹配任何
未列出的字符。例如”[^1-8]”匹配除了1到8以外的任何字符。
注意:这句话有两层含义,
一个是排除1-8字符,
另一个是一定要匹配一个字符。
例子:匹配q后面不是u的字符,正则是”q[^u]”。那么qi会被匹配。那Qantas呢?Iraq呢?答案是这两个都不会被匹配,一个是因为Q是大写,一个是因为q在最后,后面没有除了u以外的任何字符。
再次注意,排除型字符组也是要匹配一个字符的。
1.1.4 用点号匹配任意字符
元字符“.”(通常称为点号dot或者小点point)是用来
匹配任意字符的字符组的简便写法(在有些工具中,不能匹配换行符)。例如,我们需要搜索03/19/76或03-19-76或03.19.76,不怕麻烦的话可以用一个明确容许“/”、“-”或“.”的子负责构建正则表达式,如“03[-./]19[-./]76”也可以简单的尝试“03.19.76”,当然后者没有前者那么精确。这里仍然有需要注意的地方,点号在字符组里[-./]并不是元字符,同样在第一位置的连字符也不是元字符。如果连字符不在字符组的开头,如[.-/]就是用来表示范围的,但在这里是个错误的范围用法。
1.1.5 多选结构
匹配任意子表达式。“|”是一个非常简洁的元字符,它的意思是“或(or)”。依靠它,我们能够把不同的子表达式组合成一个总的表达式,而这个总的表达式又能匹配任意的子表达式。假如“Bob”和“Robert”是两个表达式,但“Bob|Robert”就是能够同时匹配其中任意一个的正则表达式。在这样的组合中,子表达式称为“多选分支(alternative)”。
回头来看上面的“gr[ea]y”例子,有意思的是,它还可以写作“grey|gray”或者“gr(a|e)y”。后者用括号来划定多选结构的范围(正常情况下,括号也是元字符)。
请注意,“gr[a|e]y”不符合我们的需求,在这里,“|”只是一个和“a”与“e”一样的普通字符。刚说过,字符组内部|不是元字符。
“gr[ea]y”与“gr(a|e)y”的例子可能会让人觉得多选结构与字符组没太大的区别,但是不要混淆这两个概念。一个字符组只能匹配目标文本中的
单个字符,而每个多选结构自身可能是
完整的正则表达式,都可以匹配任意长度的文本。
字符组基本可以算是一门独立的微型语言(例如,对于元字符它们有自己的规定),而多选结构是“正则表达式语言主体(main regular expression language)”的一部分。字符组中的元字符需要注意,同样,在一个包含多选结构的表达式中使用脱字符和美元符的时候也要小心。比较”^From|Subject|Date:*”和”^(From|Subject|Date):*”会发现匹配结果
大不相同。第一个表达式由3个多选分支构成,能匹配”^From”或”Subject”或”Date:*”,实用性不大。我们希望在每一个多选分支前都有脱字符,之后都有”:*”,所以应该使用
括号来限制这些多选分支:
”^(From|Subject|Date):*”,含义是匹配以“From:*”或“Subject:*”或“Date:*”开头的文本行。
1.1.6 忽略大小写
我们经常遇到不区分大小写(case-insensitive)的匹配的概念。E-mail header中的字段类型通常是大写字母开头,但又没有严格规定,就可以使用“[Fr][Rr][Oo][Mm]”来匹配任意大小写的“from”形式,缺点就是不方便。许多工具软件提供忽略大小写的参数,比如egrep的命令行参数“-i”表示忽略大小写。如:% egrep –i ‘^(From|Subject|Date): ’ mailbox
1.1.7 单词分界符
使用正则表达式时经常会遇到的一个问题,期望匹配的“单词(其实是字符组合)”包含在另一个单词之中,但这个包含的单词不是我们希望的结果。某些版本的egrep对单词识别提供了有限的支持:也就是单词分解符(单词开头和结束的位置)的匹配。
如果你的egerp支持“元字符序列(meta sequences)””\<”和”\>”,就可以使用它们来匹配单词分解的位置。可以把它们想象为单词版本的”^”和”$”,分别用来匹配单词的开头和结束位置。就像作为行锚点的脱字符和美元符一样,它们锚定了正则表达式的其他部分,但在匹配过程中并不对应到任何字符。表达式“\<cat\>”表示“匹配单词的开头位置,然后是cat三个字母,然后是单词的结束位置”,也就是“匹配cat这个单词”。
后面我们还会看到匹配
单词边界的”\b”元字符序列。需要说明的是,这里拿egrep举例,也并不是所有的egrep都支持这样的元字符序列。这里讲述的“正则表达式”并不是特别针对java的,而是针对整个正则的系统,后面我们会看到正则有不同的流派,java只是使用了正则的一个子集而已。
总结一下上面,我们遇到的元字符有:
另外还有几点需要注意:
1) 在字符组内部,元字符的定义规则是不一样的。
2) 不要混淆多选项和字符组。无论列出的字符有多少,字符组只能匹配一个字符,而多选项可以匹配任意长度的文本。
3) 排除型字符组是表示所有未列出的字符组的简便方法。“[^x]”表示匹配一个不等于x的字符,并不是“只有当这个位置不是x时才匹配”。也就是排除型字符组仍然是要匹配一个字符的。
4) -i 参数规定在匹配时不区分大小写。注意,这是在某些正则工具软件中。
下面将介绍更重要的“可选项(optional)”和”计数(counting)”.
1.2 可选项元素(?)
现在来看color和colour的匹配。他们的区别在于,后面的单词比前面的多一个u,我们可以用“colou?r”来同时匹配这两个单词。
元字符“?”代表可选项。把它加在一个字符的后面,就表示此处容许出现这个字符,不过它的出现并非匹配成功的必要条件。
“u?”这个元字符与我们之前看到的元字符都不相同,它只作用于之前紧邻的元素。我们可以把“4th|4”简化为“4(th)?”。我们看到“?”作用的元素是整个括号了。括号内的表达式可以任意复杂,但是“从括号外来看”他们时个整体。
界定“?”的作用对象是括号的主要用途之一。
1.3 其他量词:重复出现
1.3.1 星号,加号
“+(加号)”和”*(星号)”的作用与问号类似,也都是元字符。元字符”+”表示“之前紧邻的元素出现一次或多次”;而元字符”*”表示“之前紧邻的元素出现任意多次,或者不出现”。换种说法就是”*”表示匹配尽可能多的次数,但如果一次都不匹配也没关系。”+”表示匹配尽可能多的次数,但如果一次都不匹配就报告失败。问号,加号和星号这三个元字符统称为量词。后面会再讲到,这是匹配优先的量词,会尽可能多的匹配结果。他们还有忽略优先,占有优先的形式,后面会说。
1.3.2 规定重现次数的范围:区间
某些版本的egrep能够使用元字符序列来自定义重现次数的区间:“
{min, max}”。其中min为空”{,max}”表示没有下限,max为空”{min,}”表示没有上限。这称为“区间量词”。例如”a{3,12}”表示能够容许a出现3到12次。
问号对应“{0,1}”;加号对应”{1,}”; 星号对应”{0,}”
1.4 括号及反向引用
目前为止,我们已经见过括号的两种用途:
(1)限制多选项的范围,如“gr(a|e)y”;(2)将若干字符组合为一个单元,受问号或星号之类量词的作用,如:”(cat|dog)+”。
现在再介绍括号的
另一种用途,虽然他在egrep中并不常见,不过流行的GNU版本确实支持这一功能,在其他工具软件中很常见。
在许多流派(flavor)的正则表达式中,括号能“记住”他们包含的子表达式匹配的文本。在解决单词重复问题时就会用到这个功能。如果我们确切知道重复单词的第一个单词(比方说这个单词就是”the”),就能够明确无误地找到它。例如“the boy and the girl”,同样也会匹配到”theory”,显然后者不是我们希望的。但如果工具支持单词分界符(1.1.7节介绍)问题就比较容易解决。
然而,穷举所有可能出现的重复单词显然是不可能完成的任务。如果我们先匹配任意一个单词,接下来检查“后面的单词是否与它一样”就好办多了。如果你的egrep(多次提到该工具,只是一个例子而已)支持”反向引用”就可以这么做。反向引用时正则表达式的特性之一,它容许我们匹配与表达式先前部分匹配的同样的文本。
接下来我们就先把“\<the +the\>”(这里的加号限制的是前面的空格)中的第一个“the”替换为能够匹配任意单词的正则表达式“[A-Za-z]+”,然后在两端加上括号;最后把后一个‘the’替换为特殊的元字符序列“\1”,就得到了“\<([A-Za-z]+) +\1\>”(后面的加号前有一个空格)。在支持反向引用的工具软件中,括号能够记忆其中的子表达式匹配的文本,不论这些文本是什么,元字符序列“\1”都能记住他们。
当然,在一个表达式中我们可以使用多个括号。再用“\1”,“\2”,“\3”等来表示第一,第二,第三组括号匹配的文本。括号是按照开括号‘(’
从左到右出现顺序进行的,所以“([a-z])([0-9])\1\2”中的“\1”代表“[a-z]”匹配的内容,而“\2”代表”[0-9]”匹配的内容。
在“the the”的例子中,“[A-Za-z]+”匹配第一个“the”.因为这个子表达式在括号中,所以“\1”代表的文本就是”the”。如果“ +”(加号前有一个空格)能够匹配,后面的“\1”要匹配的文本就是“the ”。如果“\1”也能匹配成功,最后的“\>”对应单词的结尾(如果文本是“the theft”,这一条就不满足)。如果整个表达式匹配成功,我们就得到一个重复单词。同时,还可以结合前面提到的“-i”选项忽略大小写。
例如,在支持反向引用的egrep中就可以用:
% egrep –i ‘\<([a-z]+) +\1\>’ test.txt
可以找到所有的重复单词。
尽管这个表达式很有用,但仍然需要重视他的局限。egrep把每行文字都当做一个独立部分来看待,所以如果单词重复的第一个单词在某行末尾,第二个单词在下一行的开头,这个表达式就无法找到。但,后面还有更灵活的工具可以实现。
1.5 神奇的转义
正则表达式里还有一个重要的问题,如果需要匹配的某个
字符本身是元字符该怎么处理呢?例如,要检索互联网的主机名ega.att.com,其中的点号本身就是元字符,他可以匹配任何字符,包括空格。
真正匹配文本中点号的元序列应该是
反斜线(backslash)加上点号的组合:“ega\.att\.com”。“\.”称为“转义的点号”。这样的办法适用于所有的元字符,不过在字符组内无效。
这样使用的反斜线称为“转义符”。它作用的元字符会失去特殊含义,成了普通字符。我们还可以用“\([a-zA-z]+\)”来匹配一个括号内的单词,例如“(very)”。在开括号之前的反斜线消除了开闭括号的特殊意义,于是他们能够匹配文本中的开闭括号。
1.6 基础知识扩展
1.6.1 语言的差异
前面介绍的是大多数版本的egrep支持的正则表达式的特性,这样的特性还有许多,其中一些并不是所有的版本都支持。任何语言中都存在不同的方言和口音,很不幸,正则表达式也一样。情况似乎是每一种支持正则表达式的语言都提供了自己的“改进”。正则表达式不断发展,但多年的变化也造就了数目众多的流派(flavor)。
1.6.2 正则表达式的目标
从宏观的角度看,一个正则表达式要么能匹配给定的文本(对egrep来说就是一行文本)中的某些字符,要么不能匹配。在编写正则表达式时,我们必须权衡:
(1)匹配符合要求的文本,
(2)同时忽略不符合要求的文本。
1.6.3 更多例子
在任何语言中,经验都是非常重要的,下面我们就研究几个实例。
编写正则表达式时,按照预期获取成功的匹配要花去一半的功夫,另一半的功夫用来考虑如何忽略那些不符合要求的文本,这两方面都很重要。
1.6.3.1 变量名
许多程序设计语言都有标识符(identifier)的概念,标识符只包含字母数字以及下划线,但不能以数字开头。我们可以用“[a-zA-Z_][a-zA-Z_0-9]*”来匹配标识符。如果最长只能有32个字符,可以写作:“[a-zA-Z_][a-zA-Z_0-9]{0,31}”。
1.6.3.2 引号内的字符串
匹配引号内的字符串最简单的办法是使用: "[^"]*"
1.6.3.3 美元金额(可能包含小数)
“\$[0-9]+(\.[0-9][0-9])?”是一种匹配美元的办法。大致分为三部分,“\$”匹配美元符号,然后是一组数字“[0-9]+”,最后是可能出现的两位小数部分“(\.[0-9][0-9])?”。
从几个方面来看,这个表达式还很简陋。比如只能接受$1000不能接受$1,000,无法匹配$.49。
后面我们还会继续讨论这个例子。先记住这回事。
1.6.3.4 表示时刻的文字,如“9:17 am”或“12:30 pm”
匹配表示时刻的文字可能有不同的严格程度。
“[0-9]?[0-9]:[0-9][0-9] (am|pm)”能够匹配9:17 am但也能匹配无意义的时刻,如99:99 pm。
改进下上面的正则表达式,先考虑小时,可能是两位数也可能是一位数,两位数时第一个只可能是[012]再考虑第二位数,分钟一样的分开考虑,就有“(1[012]|[1-9]):[0-5][0-9] (am|pm)”。
1.7 总结
此外,需要理解以下几点:
1)各个egrep程序是由差别的。他们支持的元字符,以及这些字符的确切含义,通常有差别。
2)使用括号有3个理由:限制多选结构,分组和捕获文本。
3)字符组的特殊性在于,关于元字符的规定是完全独立于正则表达式语言主体的。
4)多选结构和字符组是截然不同的,多选可以有多个,字符组只能匹配一个字符。
5)排除型字符组同样是一种“肯定断言”,仍然需要匹配一个字符。
6)-i参数很有用,能忽略大小写的匹配。
7)转义有3种情况:
(7.1)“\”加上元字符,表示匹配元字符所使用的普通字符。
(7.2)”\”加上非元字符,组成一种由具体实现方式规定其意义的元字符序列,如“\<”表示单词的起始边界。
(7.3)“\”加上任意其他字符,默认情况是匹配此字符,也就是说,反斜线被忽略了。
8)由星号和问号限定的对象在“匹配成功”时可能并没有匹配任何字符。
![点击查看原始大小图片](http://dl2.iteye.com/upload/attachment/0094/9302/cc91831e-0af2-3386-a6d2-92bfe830654d-thumb.bmp)
- 大小: 38.6 KB
![点击查看原始大小图片](http://dl2.iteye.com/upload/attachment/0094/9304/1876cfc6-2250-3623-b813-2e374bdd7325-thumb.bmp)
- 大小: 66.1 KB
![点击查看原始大小图片](http://dl2.iteye.com/upload/attachment/0094/9306/2e1a791e-9b6e-3b24-b49c-31ad0492587c-thumb.bmp)
- 大小: 201.3 KB
分享到:
相关推荐
《永磁无刷直流电机控制系统与软件综合研究——集成电机计算软件、电机控制器及电磁设计软件的创新设计与实践》,永磁无刷直流电机计算与控制软件:高效电机控制器与电磁设计工具,永磁无刷直流电机计算软件,电机控制器,无刷电机设计软件,电机电磁设计软件 ,永磁无刷直流电机计算软件; 电机控制器; 无刷电机设计软件; 电机电磁设计软件,无刷电机设计专家:永磁无刷直流电机计算与控制器设计软件
新能源汽车VCU开发模型及策略详解:从控制策略到软件设计全面解析,新能源汽车VCU开发模型及策略详解:从控制策略到软件设计全面解析,新能源汽车VCU开发模型及控制策略,MBD电控开发 新能源汽车大势所向,紧缺VCU电控开发工程师,特别是涉及新能源三电系统,工资仅仅低于无人驾驶、智能驾驶岗位。 ——含控制策略模型 整车控制策略详细文档 通讯协议文档 接口定义 软件设计说明文档 等(超详细,看懂VCU电控策略开发就通了) 内容如下: 新能源汽车整车控制器VCU学习模型,适用于初学者。 1、模型包含高压上下电,行驶模式管理,能量回馈,充电模式管理,附件管理,远程控制,诊断辅助功能。 2、软件说明书(控制策略说明书) 3、模型有部分中文注释 对想着手或刚开始学习整车控制器自动代码生成或刚接触整车控制器有很大帮助。 ,新能源汽车VCU开发模型; 控制策略; MBD电控开发; 模型学习; 代码生成; 整车控制器; 能量回馈; 诊断辅助功能,新能源汽车电控开发详解:VCU控制策略模型及学习手册
内容概要:本文详细介绍了两种利用 Python 读取 Excel 文件的不同方法,分别是基于 pandas 和 openpyxl。对于想要利用Python 处理 Excel 数据的读者来说,文中不仅提供了简洁明了的具体代码片段以及执行效果展示,还针对每个库的应用特性进行了深度解析。此外,文档提到了一些进阶应用技巧如只读特定的工作薄、过滤某些列等,同时强调了需要注意的地方(像是路径设置、engine 参数调整之类),让读者可以在面对实际项目需求时做出更加明智的选择和技术选型。 适合人群:对 Python 有基本掌握并希望提升数据读取能力的开发人员。 使用场景及目标:适用于任何涉及到批量数据导入或是与 Excel 进行交互的业务流程。无论是做初步的数据探索还是深入挖掘隐藏于电子表格背后的故事,亦或是仅为了简化日常办公自动化任务都可以从中受益。最终目标帮助使用者熟悉两大主流 Excel 解决方案的技术特性和最佳实践。 阅读建议:本文既是一份详尽的学习指南也是一份方便随时查阅的手册。因此初学者应当认真研究所提供的示例,而有一定经验者也可以快速定位到感兴趣的部分查看关键要点。
# 医护人员排班系统 ## 1. 项目介绍 本系统是一个基于SpringBoot框架开发的医护人员排班管理系统,用于医院管理医护人员的排班、调班等工作。系统提供了完整的排班管理功能,包括科室管理、人员管理、排班规则配置、自动排班等功能。 ## 2. 系统功能模块 ### 2.1 基础信息管理 - 科室信息管理:维护医院各科室基本信息 - 医护人员管理:管理医生、护士等医护人员信息 - 排班类型管理:配置不同的排班类型(如:早班、中班、晚班等) ### 2.2 排班管理 - 排班规则配置:设置各科室排班规则 - 自动排班:根据规则自动生成排班计划 - 排班调整:手动调整排班计划 - 排班查询:查看各科室排班情况 ### 2.3 系统管理 - 用户管理:管理系统用户 - 角色权限:配置不同角色的操作权限 - 系统设置:管理系统基础配置 ## 3. 技术架构 ### 3.1 开发环境 - JDK 1.8 - Maven 3.6 - MySQL 5.7 - SpringBoot 2.2.2 ### 3.2 技术栈 - 后端框架:SpringBoot - 持久层:MyBatis-Plus - 数据库:MySQL - 前端框架:Vue.js - 权限管理:Spring Security ## 4. 数据库设计 主要数据表: - 科室信息表(keshixinxi) - 医护人员表(yihurengyuan) - 排班类型表(paibanleixing) - 排班信息表(paibanxinxi) - 用户表(user) ## 5. 部署说明 ### 5.1 环境要求 - JDK 1.8+ - MySQL 5.7+ - Maven 3.6+ ### 5.2 部署步骤 1. 创建数据库并导入SQL脚本 2. 修改application.yml中的数据库配置 3. 执行maven打包命令:mvn clean package 4. 运行jar包:java -jar xxx.jar ## 6. 使用说明 ### 6.1 系统登录 - 管理员账号:admin - 初始密码:admin ### 6.2 基本操作流程 1. 维护基础信息(科室、人员等) 2. 配置排班规则 3. 生成排班计划 4. 查看和调整排班 ## 7. 注意事项 1. 首次使用请及时修改管理员密码 2. 定期备份数据库 3. 建议定期检查和优化排班规则
MATLAB仿真的夫琅禾费衍射强度图:圆孔、圆环、矩形孔定制研究,MATLAB仿真:夫琅禾费衍射强度图的可定制性——以圆孔、圆环及矩形孔为例的研究分析,MATLAB夫琅禾费衍射强度图仿真 圆孔,圆环,矩形孔可定制。 ,MATLAB; 夫琅禾费衍射; 强度图仿真; 圆孔; 圆环; 矩形孔; 可定制。,MATLAB仿真夫琅禾费衍射强度图:定制孔型(圆孔/圆环/矩形)
详细介绍及样例数据:https://blog.csdn.net/samLi0620/article/details/145652300
基于Dugoff轮胎模型与B08_01基础建模的七自由度车辆动力学模型验证:利用MATLAB 2018及以上版本与CarSim 2020.0软件的仿真对比研究,基于Dugoff轮胎模型与B08_01框架的七自由度车辆动力学模型验证——使用MATLAB 2018及以上版本与CarSim 2020.0软件进行仿真对比研究,七自由度车辆动力学模型验证(Dugoff轮胎模型,B08_01基础上建模) 1.软件: MATLAB 2018以上;CarSim 2020.0 2.介绍: 基于Dugoff轮胎模型和车身动力学公式,搭建7DOF车辆动力学Simulink模型,对相关变量(质心侧偏角,横摆角速度,纵、横向速度及加速度)进行CarSim对比验证。 ,核心关键词:七自由度车辆动力学模型验证; Dugoff轮胎模型; B08_01建模基础; MATLAB 2018以上; CarSim 2020.0; Simulink模型; 变量对比验证。,基于Dugoff轮胎模型的七自由度车辆动力学模型验证与CarSim对比
【毕业设计】基于Java+servlet+jsp+css+js+mysql实现“转赚”二手交易平台_pgj
微猫恋爱聊妹术小程序源码介绍: 微猫恋爱聊妹术小程序源码是一款全新升级的聊天工具,它采用全新主题和UI,完美支持分享朋友圈功能。同时,它的独立后台也进行了大规模更新,让操作更加简单。其中,课堂页面、搜索页面和子话术列表页面等,均增加了流量主展示,具有超多的功能。 安装教程: 您可以先加入微猫恋爱聊妹术小程序源码的赞助群,然后在群内找到魔方安装说明。根据源码编号找到相应的安装说明,非常详细,让您轻松完成安装。
电气安装工程安全技术规程_蒋凯,杨华甫,马仲范,王清禄译;孙照森校;鞍钢工程技术编委会编
基于Copula函数的风光空间相关性联合场景生成与K-means聚类削减MATLAB研究,基于Copula函数的风光空间相关性联合场景生成与K-means聚类削减算法研究,基于copula的风光联合场景生成?K-means聚类并削减 MATLAB 由于目前大多数研究的是不计风光出力之间的相关性影响,但是地理位置相近的风电机组和光伏机组具有极大的相关性。 因此,采用 Copula 函数作为风电、光伏联合概率分布,生成风、光考虑空间相关性联合出力场景,在此基础上,基于Kmeans算法,分别对风光场景进行聚类,从而实现大规模场景的削减,削减到5个场景,最后得出每个场景的概率与每个对应场景相乘求和得到不确定性出力 ,基于Copula的风光联合场景生成; K-means聚类削减; 空间相关性; 概率分布; 场景削减,基于Copula与K-means的风光联合场景生成与削减研究
模块化多电平变流器MMC的VSG控制技术研究:基于MATLAB-Simulink的仿真分析与定制实现——支持三相与任意电平数,构网型模块化多电平变流器MMC的VSG控制策略与仿真模型:三相负荷变动下的虚拟同步发电机控制研究,构网型 模块化多电平变流器 MMC 的VSG控制 同步发电机控制 MATLAB–Simulink仿真模型,可按需求定制 10电平.14电平,任意电平可做。 三相MMC,采用VSG控制。 设置负荷变动,调整有功无功,保持电网电压和频率 ,构网型模块化多电平变流器; MMC的VSG控制; 虚拟同步发电机控制; MATLAB–Simulink仿真模型; 任意电平可做; 三相MMC; 负荷变动; 有功无功调整; 电网电压和频率保持。,基于VSG控制的模块化多电平变流器(MMC)的构网型仿真模型
暗通道算法DCP-Python实现
南师大实验室安全准入知识供学习
纯openMV寻迹小车.zip
【毕业设计】基于Java mvc架构开发的完整购物网站
以下是针对初学者的 **51单片机入门教程**,内容涵盖基础概念、开发环境搭建、编程实践及常见应用示例,帮助你快速上手。
springboot医院信管系统--
springboot私人健身与教练预约管理系统--
yolov8-0的资源