正则表达式,用理解代替记忆(基于Perl)

本文介绍了正则表达式的写法,包括匹配特定数量、范围内的字符,以及使用快捷符号等基本技巧。还讲解了如何匹配特殊类型的字符,如数字、字母及空白,并解释了边界匹配的概念。

正则表达式的基本写法:

/需要匹配的内容/

最简单的就是/Aa1/,匹配一个"Aa1"字符串。


如果想要匹配多个字符,最基本的写法就是

/a{想要匹配的数量}/

如果想要匹配一个确定的数量,比如3,就写成:/a{3}/

如果想要匹配的是一个范围,比如1-3,就写成:/a{1,3}/

如果想要匹配的是一个一边确定的范围,就写成:/a{,3}/或者是/a{1,}/


针对常用的数量匹配模式,有三个快捷符号:

+表示至少有1个(+可以理解为正数,因此至少大于0)

*表示也许有也许没有(*经常做通配符用,可以结合这点去理解)

?表示,也许有1个,也许没有(?代表不确定有没有,把有理解为1,把无理解为0)


如果想匹配的是多个字符,比如说abc,那么,可以用()将abc包起来

比如,/(abc)+/表示有至少1个abc的组合


那如果要匹配的是一个不确定,但是知道范围的字符,可以通过[]来代替

例如,要匹配的是个数字,那就是[0-9]

要匹配的是一个小写字母,那就是[a-z]

要匹配的是一个大写字母,那就是[A-Z]

如果是个数字或者字母,要注意顺序[0-9a-zA-Z]


相应的,也有快捷符号对应这些常用的范围

例如:

/d代表数字

/w代表数字或者字母

/s代表空白,例如\r\t\n\f

相应的,对应字母的大写代表反之

/D代表非数字

/W代表非数字或者字母

/S代表非空白


理解了这些,基本的正则表达式就会写了。还有一个就是关于匹配边界的问题。

^代表字头,$代表字尾,这个没有太好的方法帮助理解,但是可以使用另一种写法

\A代表字头,\Z代表字尾(仅代表Perl)

或者使用\b,把\b放前面就表示前面的边界,放后面就表示后面的边界,放两边自然就是两边的边界

还有一个\B,表示的是内部,其实就是非边界,可以简单理解为跟\b相反


对于比较特殊的类型匹配,比如说不在同一个范围的多个类型,例如Zt6和和g2F,必须匹配这两种,这个时候就要用到"|"这个符号了

在逻辑判断中,“|”代表或,在正则表达式中,这个也代表或,上面的例子其实可以写成/(Zt6)|(g2F)/,这样,就能顺利匹配到这两种组合了。


还有可能需要了解的就是几个匹配模式选项了:

g:匹配所有可能的模式,这个是模糊查找的时候,防止只匹配到第一个值就退出 general

i:忽略大小写,ignore case

m:将匹配串视为多行,进行跨行匹配的时候使用

s:将待匹配串视为单行,进行跨行匹配的时候使用

ms两者的区别在于,m将表达式视为每个单元之间有个\n?,而s将待匹配对象视为单行字符串,即换行用/n代替的一行字符串

x:忽略表达式中的空格,应该是方便那些习惯打空格的人使用

这些匹配模式选项的用法就是将对应的字母接在正则表达式的末尾,可以结合使用

还有一些没提到的建议需要使用的人士自行学习。


内容概要:本文介绍了基于贝叶斯优化的CNN-LSTM混合神经网络在时间序列预测中的应用,并提供了完整的Matlab代码实现。该模型结合了卷积神经网络(CNN)在特征提取方面的优势与长短期记忆网络(LSTM)在处理时序依赖问题上的强大能力,形成一种高效的混合预测架构。通过贝叶斯优化算法自动调参,提升了模型的预测精度与泛化能力,适用于风电、光伏、负荷、交通流等多种复杂非线性系统的预测任务。文中还展示了模型训练流程、参数优化机制及实际预测效果分析,突出其在科研与工程应用中的实用性。; 适合人群:具备一定机器学习基基于贝叶斯优化CNN-LSTM混合神经网络预测(Matlab代码实现)础和Matlab编程经验的高校研究生、科研人员及从事预测建模的工程技术人员,尤其适合关注深度学习与智能优化算法结合应用的研究者。; 使用场景及目标:①解决各类时间序列预测问题,如能源出力预测、电力负荷预测、环境数据预测等;②学习如何将CNN-LSTM模型与贝叶斯优化相结合,提升模型性能;③掌握Matlab环境下深度学习模型搭建与超参数自动优化的技术路线。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,重点关注贝叶斯优化模块与混合神经网络结构的设计逻辑,通过调整数据集和参数加深对模型工作机制的理解,同时可将其框架迁移至其他预测场景中验证效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值