当前位置:  开发笔记 > 编程语言 > 正文

正则表达式的替代方案

如何解决《正则表达式的替代方案》经验,为你挑选了1个好方法。

我有一组字符串,其中嵌入了数字.它们看起来像/ cal/long/3/4/145:999或/ pa/metrics/CosmicRay/24:4:bgp:EnergyKurtosis.我想要一个表达式解析器

使用方便.举几个例子,某人应该能够形成一个新的表达.我希望最终用户能够形成新的表达式来查询这组字符串.一些潜在用户是软件工程师,其他人是测试人员,一些是科学家.

允许对数字进行约束.类似'/ cal/long/3/4/143:#> 100&<1110'来指定带有'/ cal/long/3/4/143:'的字符串前缀,然后是(100,1110)之间的数字是期待.

支持'|' 和.因此表达式'/ cal /(long | short)/ 3/4 / '将匹配'/ cal/long/3/4/1:2'以及'/ cal/short/3/4/1:2 ".

有Java实现可用或易于在Java中实现.

有趣的替代想法会很有用.我也很想要实现我需要的正则表达式子集以及数值约束.

谢谢!



1> Rex M..:

没有理由重新发明轮子!正则表达式引擎的核心是建立在数学和计算机科学的坚实基础之上; 我们今天继续使用它们的原因是它们主要是合理的,并且在可预见的将来不会得到改善.

如果您确实找到或创建了一些替代解析语言,只涵盖了Regex可以实现的可能性的一部分,那么您很快就会有一个用户要求一个可以在Regex中表达的概念,但您的味道很简单.花时间解决尚未解决的问题!


正则表达式在数学上是合理且快速的.但他们在易用性和可维护性方面确实很难.在这方面,他们是纯粹的邪恶.这就是为什么有理由重新发明.
我不同意.正则表达式至少简明扼要,难以阅读.我相信这是一个观点,但我已经学会了它们,没有学过它们,重新学习它们.
@BT,对于任何说不熟悉的语言都可以说.
看一下lex/yacc如何使用从命名组件构建的正则表达式.与在一个可怕的perl风格的regexp中编写所有内容相比,这是一种更好的方式.
推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有