社区
数据结构与算法
帖子详情
能否用正则表达式处理类似 A [B C]和 A B 以及 A C的匹配
zzyx
2003-03-18 10:28:54
有两个串,形式为 A [B C] 或者更多,[]代表其内部为或的关系
串一:zhang [peng ping]
串二:[zhao zhang][ping pang]
我想要实现的是对以上两个串,应该有串一的:zhang ping和串二的:zhang ping 匹配。
能否用正则表达式实现对以上串的匹配?怎么做?
或者有别的办法来处理?
哪位大侠出手吧?
...全文
96
9
打赏
收藏
能否用正则表达式处理类似 A [B C]和 A B 以及 A C的匹配
有两个串,形式为 A [B C] 或者更多,[]代表其内部为或的关系 串一:zhang [peng ping] 串二:[zhao zhang][ping pang] 我想要实现的是对以上两个串,应该有串一的:zhang ping和串二的:zhang ping 匹配。 能否用正则表达式实现对以上串的匹配?怎么做? 或者有别的办法来处理? 哪位大侠出手吧?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shshsh_0510
2003-03-27
打赏
举报
回复
我没太懂你的问题,不过好像类似词法分析。
你说的“ABC1234x“的二意性当然会存在。著名的lex处理这种二义性的方法是以下两条优先原则:
1、匹配最长的串
2、匹配规则表中位置靠前的
不知对你是否有帮助。
zzyx
2003-03-22
打赏
举报
回复
啊普
zzyx
2003-03-19
打赏
举报
回复
更正:上边的
a [ b c d] e 得到的一个组合
a b e
a c e
b d e
改为
a [ b c d] e 得到的一个组合
a b e
a c e
a d e
zzyx
2003-03-19
打赏
举报
回复
非常感谢以上的朋友的帮助。
TO: plainsong(伤心的风)
我想,按照你的思路,
用表达式:"ABC(1234)|(123)(4x)|(5y)"去匹配"ABC1234x"
是可以实现的。
但麻烦的是 ABC1234x也可能是另外一个类似ABC(1234)|(123)(4x)|(5y)的串。
可能我的表达不清除,再举例子:
以下a b c d e x y 等都代表一个不包括空格的字符串,[]代表其中的串是或的关系
a [ b c d] e 得到的一个组合
a b e
a c e
b d e
另外一个串
a [b x] [e y]的可能性为
a b e
a b y
a x e
a x y
则以上的 a b e为匹配的。
另外,我在遇到这个问题的时候才刚接触正则表达式,术语,符号都不清楚呢,所以才提问能否使用。
我现在已经把这个问题先处理掉了,就是按照我上边的例子的思路,对每个串顺序遍历,使用2维数组,保存分解出的字符串,然后再比较数组,判断。只是觉得比较笨。
TO:tarkey(天星)
KMP查找算法按我的理解比较时候直接从固定的串中找特定的串
在我的问题中我想不到如何应用
短歌如风
2003-03-19
打赏
举报
回复
你用的正则表达式的语法好怪呀!一般都是这样表达的:
"zhang (peng)|(ping)"
而"zhang [peng ping]"通常都匹配"zhang p"、"zhang e"、"zhang "等。
匹配时不应直接使用表达式字串,要先对它进行分析。如果只是解决你这个问题的话比较简单,你可以写两个类,一个负责简单的匹配(目标字串的左子串与指定字串相比较),一个负责用一个字串列表去依次进行简单匹配直到成功或全部失败。
在用列表匹配时可能会有多个成功的结果,你要按一个顺序继续后续的匹配,如果整个表达式匹配成功则成功,否则再选择下一个。如:
用表达式:"ABC(1234)|(123)(4x)|(5y)"去匹配"ABC1234x":
1:"ABC" 匹配 "ABC"成功,剩余字串:"1234x";
2:"(1234)|(123)"匹配"1234"成功,剩余字串:"x";
3:"(4x)|(5y)"匹配失败。重新第二步匹配。
4:"(1234)|(123)"匹配"123"成功,剩余字串:"4x";
5:"(4x)|(5y)"匹配"4x"成功。
一般实用的正则表达式语法都很复杂,很难用简单的方法实现。建议使用“解释器”模式。
tarkey
2003-03-19
打赏
举报
回复
你去看看KMP算法吧。。
zzwu
2003-03-18
打赏
举报
回复
想法如下:
char a='A';
char b={'B','C','D'};
char c={'E','F'};
for (i=0; i<3; i++)
for (j=0; j<2; j++)
println(a+b[i]+c[j]);
zzyx
2003-03-18
打赏
举报
回复
或者有办法能实现把如 A [B C D][E F]
这样的表达式转为
A B E
A B F
A C E
A C F
A D E
A D F
也好,有思路有分
zzyx
2003-03-18
打赏
举报
回复
谢谢zzwu(未名) 。
我想你的思路基本可行,但具体实现上还有些困难。
首先,A B C等等都是代表一个长串中的子串,分解有些麻烦,存储也麻烦
其次,每个串的具体长度是不固定的,存储上需要考虑的东西比较多
我能想到最土的办法实现,但是想找找有没有比较精巧的方法。
EI复现考虑网络动态重构的分布式电源选址定容优化方法(Matlab代码实现)
内容概要:本文介绍了基于Matlab代码实现的【EI复现】考虑网络动态重构的分布式电源选址定容优化方法,重点研究在电力系统中结合网络动态重构技术进行分布式电源(如光伏、风电等)的最佳位置选择与容量配置的双层优化模型。该方法综合考虑配电网结构变化与电源布局之间的相互影响,通过优化算法实现系统损耗最小、电压稳定性提升及可再生能源消纳能力增强等多重目标。文中提供了完整的Matlab仿真代码与案例验证,便于复现实验结果并拓展应用于微网、储能配置与配电系统重构等相关领域。; 适合人群:电力系统、电气工程及其自动化等相关专业的研究生、科研人员及从事新能源规划与电网优化工作的工程师;具备一定Matlab编程基础和优化理论背景者更佳。; 使用场景及目标:①用于科研论文复现,特别是EI/SCI级别关于分布式能源优化配置的研究;②支【EI复现】考虑网络动态重构的分布式电源选址定容优化方法(Matlab代码实现)撑毕业设计、课题项目中的电源选址定容建模与仿真;③辅助实际电网规划中对分布式发电接入方案的评估与决策; 阅读建议:建议结合提供的网盘资源下载完整代码与工具包(如YALMIP),按照文档目录顺序逐步学习,注重模型构建思路与代码实现细节的对应关系,并尝试在不同测试系统上调试与扩展功能。
Agda中的函数式编程与验证
本书深入浅出地介绍如何使用Agda进行函数式编程与程序正确性证明。基于类型理论和Curry-Howard同构,将程序视为证明,实现内外兼修的可信软件构建。内容涵盖布尔逻辑、列表操作、语法解析、类型级计算及直觉主义逻辑的Kripke语义,适合具备基础编程与离散数学知识的读者。通过爱荷华Agda库(IAL)实践,帮助读者掌握从基础数据类型到定理证明的全过程,是进入形式化方法与可信计算领域的理想入门指南。
PSO-LSTM基于PSO优化LSTM网络的电力负荷预测(Python代码实现)
【PSO-LSTM】基于PSO优化LSTM网络的电力负荷预测(Python代码实现)
基于SpringBoot与Vue的电影院票务管理系统源码及数据库(Java毕业设计项目)
本系统采用SpringBoot与Vue技术架构,实现了完整的影院票务管理解决方案,包含后台数据库及全套可执行代码。该系统在高等院校计算机专业毕业设计评审中获得优异评价,特别适用于正在进行毕业课题研究的学生群体,以及需要提升项目实践能力的开发者。同时也可作为课程结业作业或学期综合训练项目使用。 系统提供完整的技术文档和经过全面测试的源代码,所有功能模块均通过多轮调试验证,保证系统稳定性和可执行性。该解决方案可直接应用于毕业设计答辩环节,其技术架构符合现代企业级开发规范,采用前后端分离模式,后端基于SpringBoot框架实现业务逻辑和数据
处理
,前端通过Vue.js构建用户交互界面。 系统核心功能涵盖影院管理、影片排期、座位预定、票务销售、用户管理等模块,实现了从影片上架到票务核销的完整业务流程。数据库设计遵循第三范式原则,确保数据一致性和完整性。代码结构采用分层架构设计,包含控制器层、服务层、数据访问层等标准组件,便于后续功能扩展和维护。 该项目不仅提供了可直接部署运行的完整程序,还包含详细的技术实现文档,帮助开发者深入理解系统架构设计理念和具体实现细节。对于计算机专业学生而言,通过研究该项目可以掌握企业级应用开发的全流程,包括需求分析、技术选型、系统设计和测试部署等关键环节。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
基于MATLAB的水下图像增强与融合算法课程设计实现方案
基于MATLAB的水下视觉质量优化与多算法集成研究 本研究聚焦于水下光学成像的质量提升问题,通过构建多算法融合框架解决水下图像存在的色偏、模糊及低对比度等典型退化现象。项目采用模块化设计思路,将色彩校正、对比度增强与噪声抑制等核心功能进行系统性整合。 在技术实现层面,首先建立水下光学衰减模型,分析不同波长光波在水体中的传播特性。针对蓝绿波段主导的水下成像环境,开发自适应白平衡算法以恢复物体真实色彩。随后引入多尺度Retinex理论,通过高斯差分滤波器分离光照分量与反射分量,有效提升图像局部对比度。为抑制增强过程中产生的噪声放大现象,特别设计基于小波阈值的去噪模块,在保持边缘细节的同时消除高频噪声。 研究过程中重点考察各算法参数的协同优化策略,通过对比度熵、色彩一致性指数等量化指标评估增强效果。实验数据表明,该融合方案在保持自然度的前提下,显著提升水下图像的视觉可辨识度,为海洋资源勘察、水下工程检测等应用场景提供可靠的技术支持。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
数据结构与算法
33,028
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章