使用Matlab处理字符串及文本时,需要与正则表达式打交道。正则表达式是一个非常重要的编程概念,主流的编程语言都对正则表达式进行了很好的支持,Matlab也不例外。
本期推文就让我们来总结一下Matlab提供的正则表达式吧!
1 引言
正则表达式(Regular Expression),又称规则表达式,本质上是一串字符,它定义了某种字符串模式,通常被用来检索、替换那些符合某个模式(规则)的文本。
Matlab 提供的正则表达式库函数主要有三个:
(1) regexp---用于对字符串进行查找,大小写敏感;
(2) regexpi---用于对字符串进行查找,大小写不敏感;
(3) regexprep---用于对字符串进行查找并替换。
下面主要介绍一下 regexp 这个函数的主要用法:
用法1:
[startIndex, endIndex] = regexp(str, expression) 返回所有匹配项的开始和结束索引。
用法2:
out = regexp(str, expression, outkey) 返回 outkey 指定的输出。例如,如果 outkey 为 'match',则 regexp 返回与该表达式匹配的子字符串而非其开始索引。outkey通常的取值有:
输出关键字返回
start 默认值所有匹配项的开始,startIndex
end所有匹配项的结束,endIndex
tokenExtents所有表文的开始和结束索引,和tokens一起用,指示出现tokens的位置
match与 expression 中的模式匹配的每个子字符串的文本
tokensstr 中每个捕获的标文的文本,即表达式中标记(tokens)的字串
names为匹配到的命名标记的标记名
splitstr 的非匹配子字符串的文本
用法3:
[out1, ..., outN] = regexp(str, expression, outkey1, ..., outkeyN) 按指定的顺序返回多个输出关键字指定的输出。例如,如果指定 match、tokens,则 regexp 返回与整个表达式匹配的子字符串以及与部分表达式匹配的标文。
用法4:
___ = regexp(___, option1, ..., optionM)使用指定的选项标志 修改搜索。例如,指定 'ignorecase' 以执行不区分大小写的匹配。可以包括任何输入并请求之前语法中的任何输出。
option - 搜索选项覆盖说明
allonce尽可能多次地匹配表达式(默认值),或仅匹配一次。
nowarningswarnings取消警告(默认值),或显示警告。
matchcaseignocase匹配字母大小写(默认值),或忽略大小写。
noemptymatchemptymatch忽略零长度匹配项(默认值),或包括这些匹配项。
dotalldotexceptnewline将点与任意字符匹配(默认值),或与除换行符 (\n) 之外的所有字符匹配.
stringanchorslineanchors将 ^ 和 $ 元字符应用于字符向量的开头和结尾(默认值),或应用于行开头和结尾。换行符 (\n) 指定行的结尾。行的开头指定为第一个字符,或紧跟在换行符后面的任何字符。
literalspacingfreespacing在匹配时包括空格字符和注释(默认值),或忽略它们。借助 freespacing,使用 '\ ' 和 '#' 匹配空格和 # 字符。
用法5:
___ = regexp(___, 'forceCellOutput')以标量元胞的形式返回每个输出参数。元胞包含被描述为上述语法输出的数值数组或子字符串。可以包括任何输入并请求之前语法中的任何输出。
2 单个字符匹配
正则表达式,指定为字符向量、字符向量元胞数组或字符串数组。
每个表达式可包含字符、元字符、运算符、标文和用于指定在 str 中匹配的模式的标志。
2.1 元字符
元字符表示字母、字母范围、数字和空格字符。使用它们来构造广义的字符模式。
. 匹配任何单个字符,包括空格和换行符。例..ain 与以 ain 结尾的五个连续字符序列匹配。
[] 匹配括号内的任意字符,$, |, ., *, +, ?, -这些字符按字面匹配。例[rp.]ain'与 rain、pain 或 .ain'匹配。
[^] 匹配除括号内字符的其它任意字符。例[^*rp]ain 与以 ain结尾的所有由四个字母组成的序列(rain、pain'和 *ain 除外)匹配。如,它与 gain、lain 或 vain匹配。
[a-b] 匹配a-b范围中的任意字符,如[a-z], A-Z, [0-9], A-y, [10-99]。
\w 匹配任意英文字母、数字、下划线,等价于 [a-z_A-Z0-9]或 [a-zA-Z_0-9]。例 \w*标识一个单词。
\W 匹配任意非英文字母、数字、下划线,等价于 [^a-zA-Z_0-9]。例 \W*标识非单词项。
\s 匹配任意非空白(空格)字符,等价于 [\f\n\r\t\v]。 如 \w*n\s 与以字母 n 结尾且后跟空白字符的单词匹配。
注: 字符表示
运算符
\a警报(蜂鸣)
\b退格符
\f换页符
\n换行符
\r回车符
\t水平制表符
\v垂直制表符
\S 匹配任意非空白字符,等价于 [^ \f\n\r\t\v]。例 \d\S 与数字(后跟任意非空白字符)匹配。
\d 匹配任意数字,等价于 [0-9]。例 \d* 与任意数量的连续数字匹配。
\D 匹配任意非数字,等价于 [^0-9]。例 \w*\D\> 与不以数字结尾的单词匹配。
oN或\o{N} 匹配八进制数N对应的Unicode字符。例 \o{40} 与八进制 40 定义的空格字符匹配。
xN或\x{N} 匹配十六进制数N对应的Unicode字符。例 \x2C 与十六进制 2C 定义的逗号字符匹配,[\x4e00-\x9fa5] 匹配任意汉字。
2.2 特殊字符
\char 匹配表达式中的特殊字符,进行转义。$,^,*,(,),+,=,{,},<,>,|,.,\,?, -。这些特殊字符前边加上 \ 将会对其转义,使得匹配他们的字面值。
3 字符串匹配
3.1 多次匹配
元字符及其特殊字符的匹配,每次只能匹配一个字符,如果需要匹配多个字符,即字符串的匹配,那么就要重复好几次元字符的表达式。
比如,匹配 mmm,那么就可以用正则表达式 mmm, 但还有一种更简单的表示法 m{3}。其中 {}表示匹配前面的表达式出现的次数,称为限定符,m{2, 3} 匹配 mm 和 mmm。
除了 {} 限定符,还有其他常用的一些限定符,描述如下:
expr* 与expr匹配的元素出现0或更多次,相当于{0, }。例 \w*与任意长度的单词匹配。
expr? 与expr匹配的元素出现0或1次,相当于{0, 1}。例 \w*(\.m)? 与单词或以扩展名 .m 结尾(此条件为可选条件)的单词匹配。
expr+ 与expr匹配的元素出现1或更多次,相当于{1, }。例 与 HTML 标记匹配(当文件名包含一个或多个字符时)。
expr{n} 与expr匹配的元素出现n次,相当于{n, n}。 例 \d{4} 与四个连续数字匹配。
expr{n, m} 与expr匹配的元素至少出现n次但不多于m次 。例 \S{4,8} 与四到八个非空白字符匹配。
expr{n, } 与expr匹配的元素至少出现n次。 例 '与 HTML 标记匹配(当文件名包含一个或多个字符时)。
假设我们要在文本中搜索美国的社会安全号码,号码的格式是 000-00-0000,那么匹配它的正则表达式可以写为 \d{3}\-\d{2}\-\d{4}。 注意到 - 是特殊字符,所以用 \- 进行了转义。
如果希望字符号码连续出现,如000000000,也可以不出现,即 000-00-0000。上面两种形式都属于正确的格式,这时可以在字符 - 后面加上数量限定符 ? ,因此表达式可改写为 \d{3}\-?\d{2}\-?\d{4}\-?。
另外,当我们使用 expr*时,Matlab 将尽可能的匹配最长的字符字串,如
s='
xyz';
regexp(s,'<.*>','match')
输出:
{'
'}
如果我们希望匹配尽可能短的字符字串时,可以在上面使用的表达式后加个 ?, 即 .*?,如
s='
xyz';
regexp(s,'<.*?>','match')
输出:
{'
'} {''} {''} {' '}
上面的例子说明了对限定符的一种显示模式之一。
下面具体说明限定符的三种模式——限定修饰符,简单起见,用 q 表示上述6个限定符中的任意一个。
expr q 积极表达式:与尽可能多的字符匹配。如给定文本
text
,表达式 ?t.*> 匹配介于 之间的所有字符。
expr q? 消极表达式:与所需的尽可能少的字符匹配。如文本
text
,表达式 ?t.*?> 在第一次出现右尖括号 (>) 时结束每个匹配项:{''} {''} {' '}。
expr q+ 主动表达式:最大程度地匹配,但不重新扫描文本的任何部分。如给定文本
text
,表达式 ?t.*+>不返回任何匹配项,这是因为右尖括号是使用 .* 捕获的且不进行重新扫描。
3.2 零宽断言/环顾断言(左顾右盼)——利用上下文匹配
利用上下文匹配可以说非常常用,比如想要提取一段文本中特定的部分内容,那么零宽断言就非常适合干这类事情。
零宽断言查找紧邻预期匹配项前后但并非该匹配项一部分的模式。
指针停留在当前位置,并且将放弃或不捕获对应于 test 表达式的字符。因此,前向断言可匹配重叠字符组。
在介绍零宽断言之前,先介绍下定位点。表达式中的定位点与文本或单词的开头或结尾匹配。
^expr 匹配以expr开头的字符串。如 ^M\w* 与以 M 作为文本开头的单词匹配。
expr$ 匹配以expr结尾的字符串。如 '\w*m$ ' 与以 m 作为文本结尾的单词匹配。
\
expr\> 匹配以expr结尾的英文单词。如 \w*e\> 与以 e 结尾的任何单词匹配。
回过头来,下面我们介绍零宽断言
expr(?=test) 先行断言:向前查找与test匹配的字符。即匹配后面跟的字符是test的字符。如 \w*(?=ing) 匹配后跟 ing 的词汇,匹配输入文本 Flying, not falling. 中的 Fly和 fall。特殊情况:expr(?=$)等价于expr$和 expr(?=\>) 等价于 expr\>。
expr(?!test) 负向先行断言:向前查找与test不匹配的字符。即匹配后面跟的字符不是test的字符。如 i(?!ng) 匹配字母 i 的后面不跟 ng 的字符。
(?<=test)expr 后发断言:向后查找与 test 匹配的字符。即匹配前面的字符有test的字符。如 (?<=re)\w* 匹配紧跟 re 的词汇,例如输入文本 renew, reuse, recycle 中的 new、use和 cycle。特殊情况:(?<=^)expr等价于 ^expr和 (?<=\<)expr等价于 \
(?
实际应用中,可以通过组合上面4中断言进行文本内容的提取,比如我们想要提取'' 文本中的网址,那么可以同时使用先行和后发断言,“左顾右盼”来提取网址内容:
s='';
regexp(s,'(?<=)','match')
输出:
{'www.baidu.com'}。
3.3 逻辑条件匹配
如果我们在表达式之前指定先行断言,即(?=test)expr等,则运算等同于逻辑 AND。这一点比较容易混淆。
(?=test)expr 同时与 test 和 expr 匹配。如 (?=[a-z])[^aeiou] 与辅音匹配。
(?!test)expr 匹配 expr,但不匹配 test。如 (?![aeiou])[a-z] 与辅音匹配。
逻辑和条件运算符允许我们测试给定条件的状态,然后使用结果确定哪个模式(如果有)与下一条件匹配。这些运算符支持逻辑 OR、if 或 if/else 条件。
条件可以是标文、环顾运算符或 (?@cmd) 形式的动态表达式。动态表达式必须返回逻辑值或数值。
条件运算法:
expr1 | expr2 匹配表达式 expr1 或表达式 expr2。比如 (let|tel)\w+ 匹配以 let 或 tel 开头的单词。
(?(cond)expr) 如果条件 cond 为 true,则匹配 expr。如 (?(?@ispc)[A-Z]:\\) 匹配驱动器名称,例如 C:\(在 Windows® 系统上运行时)。
(?(cond)expr1 | expr2) 如果条件 cond 为 true,则匹配 expr1。否则,匹配 expr2。如 Mr(s?)\..*?(?(1)her|his) \w* 匹配包含 her 的文本(当文本以 Mrs 开头时),或包含 his 的文本(当文本以 Mr 开头时)。
4 标记(tokens)匹配
标记这部分是较难的一部分,但是使用得当可以实现非常强大的功能。
任何的正则表达式都可以用圆括号括起来作为一个标记。可以按标记在文本中的顺序引用该标记(顺序标记),或将名称分配给标记以便于代码维护和使输出更易于阅读。
(expr) 匹配expr并创建标记。如 Joh?n\s(\w*) 捕获一个标记,该标记包含名字为 John 或 Jon 的任何人的姓氏。
(?:expr) 匹配expr,不创建标记。
(?>expr) 匹配expr,不创建标记,不回溯扫描。
(expr1|expr2) 匹配expr1或者expr2,创建标记。
\N 匹配第N个标记,N从1开始。如 <(\w+).*>.*\1> 从文本
Some text 捕获 HTML 标记的标文,例如 title。
(?(N)expr1|expr2) 如果找到第 N 个标文,则匹配 expr1。否则,匹配 expr2。如 Mr(s?)\..*?(?(1)her|his) \w*匹配包含 her 的文本(当文本以 Mrs开头时),或包含 his的文本(当文本以 Mr 开头时)。
(?expr) 匹配 expr并创建命名为name的标记。 (?\d+)-(?\d+)-(?\d+) 在 mm-dd-yy 形式的输入日期中创建命名月、日和年标记。
\k 匹配名为name的标记。<(?\w+).*>.*\k>从文本 Some text 捕获 HTML 标记的标文,例如 title。
(?(name)expr1|expr2) 若存在名为name的标记,则匹配expr1,否则匹配expr2。如 Mr(?s?)\..*?(?(sex)her|his) \w* 匹配包含 her 的文本(当文本以 Mrs 开头时),或包含 his 的文本(当文本以 Mr 开头时)。
5 动态正则表达式
动态表达式允许我们执行 MATLAB 命令或正则表达式以确定要匹配的文本。
将动态表达式括起来的括号不 创建捕获组。
(??expr) 解析 expr 并将得到的项包括在匹配表达式中。解析后,expr 必须对应于完整的有效正则表达式。使用反斜杠转义字符 (\) 的动态表达式需要两个反斜杠:一个用于 expr 的初始解析,一个用于完整匹配。如 ^(\d+)((??\\w{$1})) 通过读取匹配项开头的数字确定匹配的字符数。(\w,\W,\d,\D,\s,\S,和\char这些在动态表达式中需要再加个\)。动态表达式括在另一组括号中,以便在标记中捕获生成的匹配项。例如,匹配 5XXXXX 将捕获 5 和 XXXXX 的标文。
(??@cmd) 执行 cmd 表示的 MATLAB 命令,并将该命令返回的输出包括在匹配表达式中。(.{2,}).?(??@fliplr($1)) 查找长度至少为四个字符的回文,例如 abba。
(?@cmd) 执行 cmd 表示的 MATLAB 命令,但放弃该命令返回的任何输出。(对诊断正则表达式有帮助。)\w*?(\w)(?@disp($1))\1\w* 匹配包括双字母(例如 pp)的单词并显示中间结果。
在动态表达式中,使用下列运算符定义替代文本。
替代运算符
$&或$0当前作为匹配项的输入文本部分,即获取匹配成功的字串。
$`获取匹配成功的字符串前面部分
$'紧随当前匹配项的输入文本部分(使用 $''表示$')
$N获取第N个标记
$获取名为name的标记
${cmd}在 MATLAB 执行命令 cmd 时返回的输出
注释:
(?#comment) 在正则表达式中插入注释。匹配输入时将忽略注释文本。如 (?# Initial digit)\<\d\w+ 包括一个注释,并匹配以一个数字开头的单词。
6 搜索标志
搜索标志修改匹配表达式的行为。在表达式中使用搜索标志的替代方法是传递 option 输入参数。
标志说明
(?-i)匹配字母大小写(regexp 和 regexprep 的默认值)。
(?i)不匹配字母大小写(regexpi 的默认值)。
(?s)将模式中的点 (.) 与任意字符匹配(默认值)。
(?-s)将模式中的点与并非换行符的任意字符匹配。
(?-m)匹配文本开头和结尾的 ^ 和 $ 元字符(默认值)。
(?m)匹配行开头和结尾的 ^ 和 $ 元字符。
(?-x)在匹配时包括空格字符和注释(默认值)。
(?x)在匹配时忽略空格字符和注释。使用 `\ ' 和 '#' 匹配空格和 # 字符。
该标志修改的表达式可显示在括号后,例如
(?i)\w*
或显示在括号内并使用冒号 (:) 与该标志分隔开,例如
(?i:\w*)
7 多行字符串与多正则表达式
7.1 多字符串与单个正则表达式匹配
多个字符串存在一个元胞数组里之后,每一个字符串与正则表达式匹配,返回值的维数与元胞数组的维数相同。
s= {'letter';'tell';'lethal';'television';'other'};
regexp(s,'(let|tel)\w+','match')
输出:
5x1的cell。
7.2 多个字符串与多个正则表达式匹配
这种情况下,应该满足字符串元胞数组中字符串的个数和正则表达式的个数相等,但维数不一定要相等。
如可以用 5x1的元胞数组与1x4的正则表达式相匹配。
s= {'letter';'tell';'lethal';'television';'other'};
expr= {'^t\w+?','\w+r?$','\?','l.*r?'};
regexp(s,expr,'match')
7.3 多字符串的替换
这个功能是在匹配的基础上,在表达式后面加入要替换的字符串即可。
s= {'letter';'tell';'lethal';'television';'other'};
s1=regexprep(s,'(.)\1','**','ignorecase');
输出:
8 结语
使用正则表达式的过程中,如果是每天与它打交道,也就很容易记住这些规则,孰能生巧,然而长时间不使用正则表达式,就会渐渐的生疏。
因此推文总结了正则表达式常用的用法和一些相关示例说明,没事干的时候就刷一刷,帮助记忆、理解。同时,希望能够帮助有相同需要的朋友。
参考文献
匹配正则表达式(区分大小写) - MATLAB regexp - MathWorks 中国
Matlab的正则表达式:字符串及文本处理的利器(上)
Matlab的正则表达式:字符串及文本处理的利器(下)
Luo H . MATLAB GUI设计学习手记 (第3版)[J]. 2014.
你可能感兴趣的:(Matlab 正则表达式)
Matlab/simulink 风储调频,风电调频,模糊控制,mpc模型预测,虚拟惯性控制,下垂控制。
风储wind-专业frequency
其他
风电采用虚拟惯性控制,储能采用下垂控制。风电利用模糊控制改变系数,根据风速和频率变化系数。做到了自适应控制。MPC通过状态空间表达式通过fk预测下一时刻fk+1频率,仿真结果表明预测频率和实际频率相差不大。因此可以用mpc预测频率,去改变风电出力。这样利用mpc的超前预测能力进而预测风电出力。风电采用虚拟惯性控制。1-模糊控制2-mpc控制。
BLAS loading error: Neither BLAS_VERSION is set nor does blas.spec return a library name.
霍志杰
开发语言 docker matlab
序言最近在使用Docker打包MATLAB程序,之前一直运行着好好的,没有一点问题,最近在银河麒麟v10系统上面部署,遇到了这个很恶心的问题。我都一度去怀疑是Docker的问题,最初感觉是Docker版本不对,我在高版本打包在低版本上运行,然后重装Docker,发现还是报错。然后搜索一番,发现可能是芯片不支持,MATLAB的bug,他没法自动找到路径,所以需要自己下载并指定blashttps://
MATLAB 操作指南(结尾附实操案例)
vvvae1234
信息可视化
一、MATLAB简介MATLAB(矩阵实验室)是一个高级技术计算语言和交互环境,它主要用于数值计算、数据分析、算法开发和可视化。MATLAB的核心功能是矩阵运算,它能够处理向量和矩阵为中心的数学问题,方便用户进行算法的开发和数据可视化。主要特点高效的数值计算:MATLAB内置了许多用于数学和工程计算的函数,用户可以轻松地进行数值运算。可视化功能:MATLAB提供了丰富的工具,用于生成各种类型的图形
【玩转正则表达式】一套万能的针对所有场景都适用的写出正则表达式的步骤
ThisIsClark
玩转正则表达式 正则表达式
正则表达式作为一个强力的文本模式匹配工具,在功能强大的另一面是不低的使用门槛。对于很多开发者或者使用者来说,最大的问题就是面对一串待匹配的字符串,不知道如何正确的写出正则表达式。我因为是公司正则表达式相关功能的开发者,所以用户使用正则相关的功能时经常都会来找我问一个问题:我有一个xxx的字符串,想提取某某元素,应该怎么写正则表达式。于是在这个过程中,我不光积累了对正则表达式语法的熟练程度,更是对如
解锁Linux命令行的终极指南:从日常操作到系统掌控
领码科技
技能篇 Linux命令 日常操作 系统管理 Shell脚本
摘要Linux操作系统凭借其开源、高效、稳定的特性,已成为开发者和运维工程师的核心工具。本文深度解析Linux命令的底层逻辑与实战技巧,涵盖文件管理、权限控制、进程监控、网络运维等高频场景,结合Shell脚本编写与正则表达式应用,助您实现从命令行基础到高阶系统管理的跃迁。精选80+核心指令详解,配合真实案例与避坑指南,让您轻松驾驭Linux系统的日常运维与深度优化。关键词:Linux命令、日常操作
基于OFDM的无人机中继通信链路matlab误码率仿真
简简单单做算法
MATLAB算法开发 # 通信信号 matlab OFDM 无人机 中继通信
目录1.算法运行效果图预览2.算法运行软件版本3.部分核心程序4.算法理论概述5.算法完整程序工程1.算法运行效果图预览(完整程序运行后无水印)2.算法运行软件版本matlab2024b/matlab2022a3.部分核心程序(完整版代码包含详细中文注释和操作步骤视频).................................................................
群体智能优化算法-黄金正余弦优化算法(含Matlab源代码)
EOL_HRZ
算法 matlab 开发语言 群体智能优化 优化
摘要黄金正余弦优化算法(GoldenSineAlgorithm,GoldSA)是一种数学启发式算法,基于黄金分割系数(GoldenRatio)以及正余弦函数的随机扰动机制来更新解的位置。该算法通过在迭代过程中不断利用黄金分割比例来调整搜索范围,同时结合正弦与余弦变化,为个体提供多样化的全局搜索与局部微调能力。本文提供了GoldSA的核心思想与完整MATLAB代码,并附上中文详细注释,以帮助读者深入
文件关键字搜索技术要点与实战
体制教科书
本文还有配套的精品资源,点击获取简介:在IT行业中,能够通过输入关键字高效定位和管理大量文档是一项重要的技能。此功能通常集成于文件管理软件、搜索引擎或脚本程序中。技术实现包括文件系统API、文本搜索算法和文件过滤规则。本文将详细介绍这些技术要点,例如使用文件系统API遍历文件、采用高效文本搜索算法(如Boyer-Moore)以及应用文件过滤规则(包括类型筛选和正则表达式匹配)。特殊文件格式如Out
《人形机器人入门》开源项目推荐
段钰忻
《人形机器人入门》开源项目推荐IntroductionToHumanoidRoboticsMatlabcodeforaSpringerbook"IntroductiontoHumanoidRobotics"项目地址:https://gitcode.com/gh_mirrors/in/IntroductionToHumanoidRobotics1.项目基础介绍《人形机器人入门》开源项目是基于MATL
爬虫的精准识别:基于 User-Agent 的正则实现
Small踢倒coffee_氕氘氚
经验分享 笔记
##摘要随着互联网技术的飞速发展,网络爬虫在数据采集、搜索引擎优化等领域的应用日益广泛。然而,恶意爬虫的存在也给网站安全和数据隐私带来了严重威胁。因此,精准识别爬虫行为成为网络安全领域的重要课题。本文提出了一种基于User-Agent正则表达式的爬虫识别方法,通过分析User-Agent字符串的特征,构建正则表达式规则,实现对爬虫的精准识别。实验结果表明,该方法具有较高的识别准确率和较低的误报率,
智能车辆控制技术:MPC与轨迹规划实战项目
柚木i
本文还有配套的精品资源,点击获取简介:本压缩包集合了车辆转向控制与轨迹规划的MATLAB代码,包含模型预测控制(MPC)策略、MPT工具箱应用、车辆动力学模型构建、轨迹规划实现、mp-QP算法应用及MATLAB编程实践。旨在通过源码分析,提供智能车辆控制技术的深入学习与研究平台,涉及横向和纵向运动控制、系统模型的定义、控制策略的制定及仿真流程。1.模型预测控制(MPC)基础与应用模型预测控制(MP
多目标优化算法之NSGA-II、NSGA-III(附Matlab免费代码)
优化算法侠Swarm-Opti
智能优化算法 算法 matlab 开发语言 优化算法 NSGA
引言NSGA-II和NSGA-III都是非支配排序遗传算法的变种,用于解决多目标优化问题,但它们在多个方面存在差异。相同点基本框架相似:两者都基于遗传算法的框架,包括初始化种群、非支配排序、选择、交叉和变异等操作非支配排序:都采用非支配排序技术,将种群中的个体划分为不同的前沿,识别非支配解集不同点适用目标数量不同:NSGA-II:适用于相对较少的目标数量,通常在2到4个目标之间,在处理较少目标的问
电话的正则表达式
几度泥的菜花
javascript 前端
正则表达式是一种强大的文本处理工具,用于匹配、查找、替换或提取字符串中的特定模式。它由普通字符和特殊字符(元字符)组成,其中元字符具有特殊含义,用于定义匹配规则。电话的正则表达式根据不同国家和地区的规范有所不同。下面是一些常见的电话正则表达式示例:1.中国大陆的电话正则表达式对于中国大陆的手机号码,通常是11位数字,以1开头,第二位数字为3、4、5、6、7、8、9中的一个。手机号码(11位
Java字符串以“.“分割
slient_love
软件开发
今天开发中需要对图片地址进行拼接,使用字符串分割函数split()进行处理,发现数组为空:Stringtemp=image[i];String[]str=temp.split(".");在百度之后发现,需要使用转义字符。测试成功~String[]str=temp.split("\\.");注意哦,在正则表达式中,小数点指的是任意字符,因此不能直接用".“来匹配小数点,需要使用”\\."来匹配小数点
【图像检测】基于霍夫变换 Hough变换实现图片车道线检测matlab代码
Matlab科研辅导帮
图像处理 matlab 计算机视觉 算法
1简介本文提出了一种新的基于霍夫变换的复杂情况下车道线检测的算法,这个算法能够成功在夜晚,白天,有阴影,车道线磨损不太严重等复杂情况下检测出车道线.传统的车道线检测算法主要为直接在图像中进行霍夫变换,这种算法实时性差,计算量大.本文提出的算法将先对原图像进行处理,设置ROI区域减少计算量,转换颜色空间并且扫描图像灰度值划分出有阴影的区域进行处理,最后判断最有可能出现车道线的区域,进行霍夫变换检测出
华为机试—字符串通配符
rigidwill666
华为机考 华为 算法 数据结构 动态规划 c++
题目在计算机中,通配符是一种特殊语法,广泛应用于文件搜索、数据库、正则表达式等领域。让我们来学习通配符的匹配规则:‘*’符号代表匹配0个或以上的数字或字母;‘?’符号代表匹配1个数字或字母;小写字母字符代表匹配自身和自身的大写字母形态;大写字母字符代表匹配自身和自身的小写字母形态;其他字符代表匹配自身。现在,对于给定的通配符字符串s和目标字符串p,不考虑大小写,请判断s是否可以匹配得到p。如果可以
【图像去雾】基于多尺度Retinex实现图像去雾附Matlab代码
Matlab科研辅导帮
图像处理 matlab 开发语言
✅作者简介:热爱数据处理、建模、算法设计的Matlab仿真开发者。更多Matlab代码及仿真咨询内容点击:Matlab科研工作室个人信条:格物致知。内容介绍1.引言雾霾天气严重影响了人们的生活和工作,对图像的清晰度也造成了极大的破坏。图像去雾技术旨在消除图像中的雾霾,恢复图像的真实色彩和细节,在交通监控、遥感成像、医学影像等领域具有广泛的应用价值。近年来,基于Retinex理论的图像去雾方法取得了
Python网络爬虫实战:抓取猫眼TOP100电影信息
莱财一哥
本文还有配套的精品资源,点击获取简介:在Python中,Web爬虫是获取互联网数据的关键技能。本教程将指导如何结合使用requests库和正则表达式来从猫眼电影网站的TOP100榜单中抓取电影信息。首先通过requests库发送HTTP请求获取网页内容,然后运用正则表达式提取电影名和评分等信息。在进行网络爬虫时,遵守robots.txt规则,设置请求延时,并考虑处理网站的反爬虫策略。对于更复杂的网
解锁MATLAB语言:从入门到实战的编程秘籍
大雨淅淅
编程语言 matlab 开发语言
目录一、MATLAB是什么?二、搭建MATLAB环境三、基础语法入门3.1特殊符号与运算符3.2变量命名与赋值3.3向量与矩阵创建四、实战演练4.1简单数学运算4.2绘制函数图像五、深入学习建议一、MATLAB是什么?MATLAB,即MatrixLaboratory(矩阵实验室),是美国MathWorks公司开发的一款商业数学软件,也是众多工程师和数学家钟爱的编程与数值计算平台。自1984年首次发
黑色RGB是什么
上海迪士尼35
信息可视化
>好的,用户现在问的是“黑色rgb是什么”。我需要先理解用户的问题。之前用户在使用MATLAB调整网格线颜色时,可能看到了默认颜色是黑色,或者之前我提到过默认颜色是[0.150.150.15],而用户可能现在想知道黑色的RGB值具体是什么。>>首先,用户可能对RGB颜色模型不太熟悉,或者需要确认在MATLAB中如何表示纯黑色。通常,RGB颜色模型中,纯黑色是(0,0,0),但有时候在不同的软件或环
matlab在输电线路故障测距中应用,Matlab在输电线路故障测距中的应用.doc
weixin_39944233
Matlab在输电线路故障测距中的应用.docMatlab在输电线路故障测距中的应用毕业设计(论文)题目Matlab在输电线路故障测距中的应用二级学院电子信息与自动化学院专业电气工程及其自动化班级110070401学生姓名施永平学号11007990223指导教师雷绍兰职称教授时间2014年2月24日至6月10日目录摘要IAbstractII1绪论11.1引言11.2本课题的研究目的及意义11.3输
MATLAB基于Simulink的行波故障测距,提出了基于MATLAB SIMULINK的输电线路故障行波仿真方法
GKsUaMF
matlab 开发语言
MATLAB基于Simulink的行波故障测距,提出了基于MATLABSIMULINK的输电线路故障行波仿真方法。在此基础上建立了基于分布参数模型的输电线路故障行波仿真平台。最后,以输电线路的单相短路故障为例,应用该平台和MATLAB编程实现了对输电线路故障的仿真以及故障行波的提取。MATLAB基于Simulink的行波故障测距在电力系统中具有广泛的应用。随着电力系统的不断发展和变革,为了提高输电
MATLAB突然打不开,窗口闪退,一实测可行的方法
加点油。。。。
matlab 开发语言
参考链接matlab安装打不开(一个黑框一闪而过)解决办法!_matlab打不开-CSDN博客matlab打开时总闪一下才打开_matlab打不开,只在任务栏闪一下就无反应了怎么办?...-CSDN博客解决方法上面的文章都提到删除或者重命名**C:\Users\\AppData\Roaming\MathWorks\MATLAB**中当前所装MATLAB版本的文件夹。但是操作下来发现我的电脑中找不到
MATLAB 脑电数据处理代码优化:从基础到并行计算的演变
自由的晚风
matlab 算法 人工智能 脑机接口 经验分享 笔记 SSVEP
文章目录前言版本1:基础的串行处理版本2:引入并行计算提高效率版本3:进一步优化的并行化处理总结前言在处理EEG(脑电图)数据时,我们常常需要对大量信号进行滤波、降噪等操作。随着数据规模的不断增大,传统的串行处理方法往往变得效率低下。为了提高计算速度,我们可以通过引入并行计算来大幅度提升处理效率。本文将通过三个版本的MATLAB代码演示如何优化EEG数据处理流程,从基础的串行处理到并行计算,再到进
PCL 点云迭代加权最小二乘法拟合平面(抑制噪声)
大鱼BIGFISH
点云进阶 最小二乘法 平面 C++ PCL 迭代加权
文章目录一、简介二、实现代码三、实现效果参考资料一、简介受到之前博客的启发(Matlab点云最小二乘法拟合平面(剔除噪声)),我们不仅可以通过剔除一些异常点来拟合更为合适的平面,而且还可以在这个过程中对每个点进行加权来抑制噪声点,双管齐下也可以使得算法更具鲁棒性,并拟合出合适的平面,具体过程如下所示:1、首先使用加权的最小二乘法拟合一个平面系数的初值。2、计算所有有效点到拟合平面的距离did_i
ES6 字符串和正则表达式(三)
小李学软件
ES6学习 javascript es6 es6/es7
更好的Unicode支持早期,由于存储空间宝贵,Unicode使用16位二进制来存储文字。我们将一个16位的二进制编码叫做一个码元(CodeUnit)。后来,由于技术的发展,Unicode对文字编码进行了扩展,将某些文字扩展到了32位(占用两个码元),并且,将某个文字对应的二进制数字叫做码点(CodePoint)。ES6为了解决这个困扰,为字符串提供了方法:codePointAt,根据字符串码元的
Linux fgrep 命令使用详解
linux
简介fgrep(fixGREP)命令搜索固定字符串,而不将特殊字符解释为正则表达式。它相当于grep-F。基础语法fgrep[OPTIONS]"STRING"FILE或grep-F[OPTIONS]"STRING"FILE示例用法在文件中查找包含“error”的所有行fgrep"error"logfile.txt或grep-F"error"logfile.txt搜索多个字符串keywords.tx
论文摘要生成器:用TextRank算法实现文献关键信息提取
Atlas Shepherd
python 算法 自然语言处理 python 信息可视化
我们基于python代码,使用PyQt5创建图形用户界面(GUI),同时支持中英文两种语言的文本论文文献关键信息提取。PyQt5:用于创建GUI应用程序。jieba:中文分词库,用于中文文本的处理。re:正则表达式模块,用于文本清理和句子分割。numpy:提供数值计算能力,如数组操作、矩阵运算等,主要用于TextRank算法的实现。importsysimportreimportjiebaimpor
用5个实例学习python正则表达式基本用法_跟我一起学Python20
灏瀚星空
python 学习 正则表达式 经验分享 学习方法
用5个实例学习python正则表达式基本用法_跟我一起学Python20为什么学习正则表达式?正则表达式是处理文本的"瑞士军刀",它能帮助你:✅快速验证用户输入格式(手机号/邮箱)✅批量提取文本中的特定信息(日期/链接)✅智能替换敏感内容✅高效清理杂乱数据本文将通过5个真实场景,结合Python代码,带你掌握正则表达式的核心用法。场景一:手机号验证(基础匹配)需求:验证用户输入的11位手机号(以1
piv matlab,piv MATLAB中PIV源代码 - 下载 - 搜珍网
Rachel瑞小秋
piv matlab
piv/piv/articross.matpiv/articross2.matpiv/autopass.mpiv/convf2.mpiv/definewoco.mpiv/EGU2009-13295.PDFpiv/fillmiss.mpiv/finalpass.mpiv/firstone_analysis.mpiv/firstpass.mpiv/fixdigim.mpiv/fq0107.mpiv/f
jsonp 常用util方法
hw1287789687
jsonp jsonp常用方法 jsonp callback
jsonp 常用java方法
(1)以jsonp的形式返回:函数名(json字符串)
/***
* 用于jsonp调用
* @param map : 用于构造json数据
* @param callback : 回调的javascript方法名
* @param filters : <code>SimpleBeanPropertyFilter theFilt
多线程场景
alafqq
多线程
0
能不能简单描述一下你在java web开发中需要用到多线程编程的场景?0
对多线程有些了解,但是不太清楚具体的应用场景,能简单说一下你遇到的多线程编程的场景吗?
Java多线程
2012年11月23日 15:41 Young9007 Young9007
4
0 0 4
Comment添加评论关注(2)
3个答案 按时间排序 按投票排序
0
0
最典型的如:
1、
Maven学习——修改Maven的本地仓库路径
Kai_Ge
maven
安装Maven后我们会在用户目录下发现.m2 文件夹。默认情况下,该文件夹下放置了Maven本地仓库.m2/repository。所有的Maven构件(artifact)都被存储到该仓库中,以方便重用。但是windows用户的操作系统都安装在C盘,把Maven仓库放到C盘是很危险的,为此我们需要修改Maven的本地仓库路径。
placeholder的浏览器兼容
120153216
placeholder
【前言】
自从html5引入placeholder后,问题就来了,
不支持html5的浏览器也先有这样的效果,
各种兼容,之前考虑,今天测试人员逮住不放,
想了个解决办法,看样子还行,记录一下。
【原理】
不使用placeholder,而是模拟placeholder的效果,
大概就是用focus和focusout效果。
【代码】
<scrip
debian_用iso文件创建本地apt源
2002wmj
Debian
1.将N个debian-506-amd64-DVD-N.iso存放于本地或其他媒介内,本例是放在本机/iso/目录下
2.创建N个挂载点目录
如下:
debian:~#mkdir –r /media/dvd1
debian:~#mkdir –r /media/dvd2
debian:~#mkdir –r /media/dvd3
….
debian:~#mkdir –r /media
SQLSERVER耗时最长的SQL
357029540
SQL Server
对于DBA来说,经常要知道存储过程的某些信息:
1. 执行了多少次
2. 执行的执行计划如何
3. 执行的平均读写如何
4. 执行平均需要多少时间
列名 &
com/genuitec/eclipse/j2eedt/core/J2EEProjectUtil
7454103
eclipse
今天eclipse突然报了com/genuitec/eclipse/j2eedt/core/J2EEProjectUtil 错误,并且工程文件打不开了,在网上找了一下资料,然后按照方法操作了一遍,好了,解决方法如下:
错误提示信息:
An error has occurred.See error log for more details.
Reason:
com/genuitec/
用正则删除文本中的html标签
adminjun
java html 正则表达式 去掉html标签
使用文本编辑器录入文章存入数据中的文本是HTML标签格式,由于业务需要对HTML标签进行去除只保留纯净的文本内容,于是乎Java实现自动过滤。
如下:
public static String Html2Text(String inputString) {
String htmlStr = inputString; // 含html标签的字符串
String textSt
嵌入式系统设计中常用总线和接口
aijuans
linux 基础
嵌入式系统设计中常用总线和接口
任何一个微处理器都要与一定数量的部件和外围设备连接,但如果将各部件和每一种外围设备都分别用一组线路与CPU直接连接,那么连线
Java函数调用方式——按值传递
ayaoxinchao
java 按值传递 对象 基础数据类型
Java使用按值传递的函数调用方式,这往往使我感到迷惑。因为在基础数据类型和对象的传递上,我就会纠结于到底是按值传递,还是按引用传递。其实经过学习,Java在任何地方,都一直发挥着按值传递的本色。
首先,让我们看一看基础数据类型是如何按值传递的。
public static void main(String[] args) {
int a = 2;
ios音量线性下降
bewithme
ios音量
直接上代码吧
//second 几秒内下降为0
- (void)reduceVolume:(int)second {
KGVoicePlayer *player = [KGVoicePlayer defaultPlayer];
if (!_flag) {
_tempVolume = player.volume;
与其怨它不如爱它
bijian1013
选择 理想 职业 规划
抱怨工作是年轻人的常态,但爱工作才是积极的心态,与其怨它不如爱它。
一般来说,在公司干了一两年后,不少年轻人容易产生怨言,除了具体的埋怨公司“扭门”,埋怨上司无能以外,也有许多人是因为根本不爱自已的那份工作,工作完全成了谋生的手段,跟自已的性格、专业、爱好都相差甚远。
一边时间不够用一边浪费时间
bingyingao
工作 时间 浪费
一方面感觉时间严重不够用,另一方面又在不停的浪费时间。
每一个周末,晚上熬夜看电影到凌晨一点,早上起不来一直睡到10点钟,10点钟起床,吃饭后玩手机到下午一点。
精神还是很差,下午像一直野鬼在城市里晃荡。
为何不尝试晚上10点钟就睡,早上7点就起,时间完全是一样的,把看电影的时间换到早上,精神好,气色好,一天好状态。
控制让自己周末早睡早起,你就成功了一半。
有多少个工作
【Scala八】Scala核心二:隐式转换
bit1129
scala
Implicits work like this: if you call a method on a Scala object, and the Scala compiler does not see a definition for that method in the class definition for that object, the compiler will try to con
sudoku slover in Haskell (2)
bookjovi
haskell sudoku
继续精简haskell版的sudoku程序,稍微改了一下,这次用了8行,同时性能也提高了很多,对每个空格的所有解不是通过尝试算出来的,而是直接得出。
board = [0,3,4,1,7,0,5,0,0,
0,6,0,0,0,8,3,0,1,
7,0,0,3,0,0,0,0,6,
5,0,0,6,4,0,8,0,7,
Java-Collections Framework学习与总结-HashSet和LinkedHashSet
BrokenDreams
linkedhashset
本篇总结一下两个常用的集合类HashSet和LinkedHashSet。
它们都实现了相同接口java.util.Set。Set表示一种元素无序且不可重复的集合;之前总结过的java.util.List表示一种元素可重复且有序
读《研磨设计模式》-代码笔记-备忘录模式-Memento
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
import java.util.ArrayList;
import java.util.List;
/*
* 备忘录模式的功能是,在不破坏封装性的前提下,捕获一个对象的内部状态,并在对象之外保存这个状态,为以后的状态恢复作“备忘”
《RAW格式照片处理专业技法》笔记
cherishLC
PS
注意,这不是教程!仅记录楼主之前不太了解的
一、色彩(空间)管理
作者建议采用ProRGB(色域最广),但camera raw中设为ProRGB,而PS中则在ProRGB的基础上,将gamma值设为了1.8(更符合人眼)
注意:bridge、camera raw怎么设置显示、输出的颜色都是正确的(会读取文件内的颜色配置文件),但用PS输出jpg文件时,必须先用Edit->conv
使用 Git 下载 Spring 源码 编译 for Eclipse
crabdave
eclipse
使用 Git 下载 Spring 源码 编译 for Eclipse
1、安装gradle,下载 http://www.gradle.org/downloads
配置环境变量GRADLE_HOME,配置PATH %GRADLE_HOME%/bin,cmd,gradle -v
2、spring4 用jdk8 下载 https://jdk8.java.
mysql连接拒绝问题
daizj
mysql 登录权限
mysql中在其它机器连接mysql服务器时报错问题汇总
一、[running]
[email protected] :~$mysql -uroot -h 192.168.9.108 -p //带-p参数,在下一步进行密码输入
Enter password: //无字符串输入
ERROR 1045 (28000): Access
Google Chrome 为何打压 H.264
dsjt
apple html5 chrome Google
Google 今天在 Chromium 官方博客宣布由于 H.264 编解码器并非开放标准,Chrome 将在几个月后正式停止对 H.264 视频解码的支持,全面采用开放的 WebM 和 Theora 格式。
Google 在博客上表示,自从 WebM 视频编解码器推出以后,在性能、厂商支持以及独立性方面已经取得了很大的进步,为了与 Chromium 现有支持的編解码器保持一致,Chrome
yii 获取控制器名 和方法名
dcj3sjt126com
yii framework
1. 获取控制器名
在控制器中获取控制器名: $name = $this->getId();
在视图中获取控制器名: $name = Yii::app()->controller->id;
2. 获取动作名
在控制器beforeAction()回调函数中获取动作名: $name =
Android知识总结(二)
come_for_dream
android
明天要考试了,速速总结如下
1、Activity的启动模式
standard:每次调用Activity的时候都创建一个(可以有多个相同的实例,也允许多个相同Activity叠加。)
singleTop:可以有多个实例,但是不允许多个相同Activity叠加。即,如果Ac
高洛峰收徒第二期:寻找未来的“技术大牛” ——折腾一年,奖励20万元
gcq511120594
工作 项目管理
高洛峰,兄弟连IT教育合伙人、猿代码创始人、PHP培训第一人、《细说PHP》作者、软件开发工程师、《IT峰播》主创人、PHP讲师的鼻祖!
首期现在的进程刚刚过半,徒弟们真的很棒,人品都没的说,团结互助,学习刻苦,工作认真积极,灵活上进。我几乎会把他们全部留下来,现在已有一多半安排了实际的工作,并取得了很好的成绩。等他们出徒之日,凭他们的能力一定能够拿到高薪,而且我还承诺过一个徒弟,当他拿到大学毕
linux expect
heipark
expect
1. 创建、编辑文件go.sh
#!/usr/bin/expect
spawn sudo su admin
expect "*password*" { send "13456\r\n" }
interact
2. 设置权限
chmod u+x go.sh 3.
Spring4.1新特性——静态资源处理增强
jinnianshilongnian
spring 4.1
目录
Spring4.1新特性——综述
Spring4.1新特性——Spring核心部分及其他
Spring4.1新特性——Spring缓存框架增强
Spring4.1新特性——异步调用和事件机制的异常处理
Spring4.1新特性——数据库集成测试脚本初始化
Spring4.1新特性——Spring MVC增强
Spring4.1新特性——页面自动化测试框架Spring MVC T
idea ubuntuxia 乱码
liyonghui160com
1.首先需要在windows字体目录下或者其它地方找到simsun.ttf 这个 字体文件。
2.在ubuntu 下可以执行下面操作安装该字体:
sudo mkdir /usr/share/fonts/truetype/simsun
sudo cp simsun.ttf /usr/share/fonts/truetype/simsun
fc-cache -f -v
改良程序的11技巧
pda158
技巧
有很多理由都能说明为什么我们应该写出清晰、可读性好的程序。最重要的一点,程序你只写一次,但以后会无数次的阅读。当你第二天回头来看你的代码 时,你就要开始阅读它了。当你把代码拿给其他人看时,他必须阅读你的代码。因此,在编写时多花一点时间,你会在阅读它时节省大量的时间。
让我们看一些基本的编程技巧:
尽量保持方法简短
永远永远不要把同一个变量用于多个不同的
300个涵盖IT各方面的免费资源(下)——工作与学习篇
shoothao
创业 免费资源 学习课程 远程工作
工作与生产效率:
A. 背景声音
Noisli:背景噪音与颜色生成器。
Noizio:环境声均衡器。
Defonic:世界上任何的声响都可混合成美丽的旋律。
Designers.mx:设计者为设计者所准备的播放列表。
Coffitivity:这里的声音就像咖啡馆里放的一样。
B. 避免注意力分散
Self Co
深入浅出RPC
uule
rpc
深入浅出RPC-浅出篇
深入浅出RPC-深入篇
RPC
Remote Procedure Call Protocol
远程过程调用协议
它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发