社区
数据结构与算法
帖子详情
能否用正则表达式处理类似 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 匹配。
能否用正则表达式实现对以上串的匹配?怎么做?
或者有别的办法来处理?
哪位大侠出手吧?
...全文
109
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等等都是代表一个长串中的子串,分解有些麻烦,存储也麻烦
其次,每个串的具体长度是不固定的,存储上需要考虑的东西比较多
我能想到最土的办法实现,但是想找找有没有比较精巧的方法。
Java小程序客服消息自动回复[项目源码]
本文详细介绍了如何在Java中实现微信小程序客服消息的自动回复功能,特别是图文消息的回复。首先,需要在微信小程序后台设置客服消息的回调地址,并参考微信官方文档了解支持的消息类型,包括文本、图片、图文链接和小程序卡片。接着,通过引入Java SDK(如weixin-java-mp)并配置Maven依赖,开发者可以快速集成微信消息
处理
功能。文章还提供了完整的代码示例,展示了如何通过GET和POST请求
处理
微信的验证和消息回调,以及如何发送图文链接消息。代码中包含了配置小程序AppID、密钥、Token和加密密钥的步骤,并演示了如何解析加密消息和发送客服消息。
llama.cpp本地部署教程[项目代码]
本教程详细介绍了如何在Windows WSL2环境下使用openclaw和llama.cpp部署本地大模型。教程涵盖环境准备、硬件要求、安装编译工具、下载和编译llama.cpp、下载模型、运行模型(包括命令行交互模式和API服务)、API调用方法、常用参数说明、常见问题解答以及推荐模型等内容。教程还提供了快速启动脚本和文件结构说明,适合不同显存配置的用户选择适合的模型进行部署。
含光热电站、有机有机朗肯循环、P2G的综合能源优化调度(Matlab代码实现)
含光热电站、有机有机朗肯循环、P2G的综合能源优化调度(Matlab代码实现)内容概要:本文介绍了基于Matlab代码实现的含光热电站、有机朗肯循环(ORC)和电转气(P2G)技术的综合能源系统优化调度模型。该模型旨在通过整合多种能源转换与存储技术,提升能源系统的灵活性与效率,尤其关注多能互补与协同优化,实现对风电、光伏等间歇性可再生能源的有效消纳。文中详细阐述了各组成部分的工作原理及其在综合能源系统中的耦合关系,并构建了考虑经济性、环保性与可靠性的多目标优化调度框架,通过Matlab编程进行求解与仿真分析,验证了所提模型在降低系统运行成本、提高能源利用率和减少碳排放方面的有效性。; 适合人群:适用于从事能源系统规划、电力系统优化、可再生能源集成等领域的科研人员、高校研究生及工程技术人员,尤其适合具备一定Matlab编程基础和能源系统背景知识的专业人士。; 使用场景及目标:①用于研究高比例可再生能源接入背景下综合能源系统的协同调度策略;②支撑光热、ORC、P2G等新型能源技术的建模与仿真分析;③为多能互补系统的经济运行与低碳调度提供决策支持。; 阅读建议:建议读者结合Matlab代码与文中模型描述进行对照学习,重点关注目标函数构建、约束条件设置及优化算法的选择,宜在实际案例基础上进行参数调整与仿真验证,以深化对综合能源系统优化机制的理解。
串口通信详解[源码]
本文全面介绍了串口通信的基本原理、核心特征、数据帧格式、波特率、流控制等关键概念,并通过实际应用场景展示了串口通信在单片机调试、智能家居设备配置、工业数据采集和GPS导航等领域的广泛应用。文章详细解析了串口通信的工作流程,包括发送端和接收端的完整步骤,并提供了常见问题的解决方案和配置建议。串口通信作为一种简单但功能强大的通信方式,至今仍在嵌入式系统和工业控制中发挥着不可替代的作用。
WindowsStore-LTSC2020 from Win10 Store, double-click to run
打开链接下载源码: https://pan.quark.cn/s/54439244142c 《深入理解Win10应用商店安装与运行》在Windows操作系统的环境中,Win10应用商店(Windows Store)是微软为用户进行应用程序获取和更新的关键渠道。对于LTSC(Long-Term Servicing Channel,长期服务频道)版本的Win10用户而言,安装并确保Windows Store可以正常运作显得尤为关键,因为这个版本通常不包括最新的功能升级,但应用商店能够提供额外的应用程序和服务。本文将详细分析Win10应用商店在LTSC 2020版本中的安装步骤以及可能遭遇的难题。让我们来研究WindowsStore_LTSC2020.exe这个文件。这是一个专门设计用于在LTSC版本上设置Win10应用商店的可执行文件。用户只需执行双击操作,然后遵循指示进行操作,原则上就可以实现安装。然而,必须留意的是,由于不同用户的系统配置和环境存在差异,可能会遭遇各种挑战,例如描述中指出的"安装结束后显示部分错误信息"。这些错误信息可能是由于系统兼容性、权限设置、网络条件或已安装的其他软件冲突所引发的。
处理
这类情况通常需要一定的技巧和细心。保证你的系统符合Win10应用商店的基本硬件和软件要求。核实系统的更新情况,确保所有必要的补丁都已安装。此外,在执行时以管理员身份启动安装程序,并关闭可能影响安装的杀毒软件。如果仍然出现错误,仔细审视错误信息,通常可以找到解决问题的方向。在LTSC版本中,由于其设计,可能缺少某些功能更新,因此在安装Win10应用商店时需要特别关注。LTSC版本主要面向企业用户,注重稳定性和安全性,但减少了部分新功能的更新。因此,一些依赖新功能的应...
数据结构与算法
33,028
社区成员
35,337
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章