2015-07-20 62 views
2

是否存在除字符串以外的序列的正则表达式引擎?对我来说,对于限制正则表达式的字符串没有什么特别之处,它们只是字符序列。非字符串序列的正则表达式

举例来说,如果我有Buffalo对象的名单,我想检查我的列表匹配超过5 4和7之间Buffalo英尺高,其次是白色Buffalo,随后反向引用到4-7 Buffalo之前,然后是列表的结尾,是否有引擎来支持这样的事情?

我目前不需要这个,只是好奇。

回答

0

正则表达式适用于字符串,不适用于对象。如果你想匹配对象键或值,你将不得不遍历它们。

0

检出Boost's Regex和C++ 11的std::basic_regex。它似乎允许您指定类型和一些特征作为模板参数。但是,它并没有给你一种方法来对类型或方法进行更复杂的比较。

通常,正则表达式与底层对象本身的平等概念非常相关。除此之外,这将成为与“regular expression”这一概念无关的附加功能集。

这对我提出的问题是......为什么看起来没有一个图书馆能够完成你所提出的任务?我认为关键在于正则表达式通常用于处理半结构化或非结构化数据。但是对象是非常正式的结构,即使是相对无类型的语言,比如Javascript。在那一点上,程序员倾向于使用语言结构来构建他们认为合适的数据,而不是重新解释更通用的结构化,因为这似乎使事情变得不那么惯用。事实上,他们不需要的正则表达式似乎被视为黑客。

试图想象一下用例,我希望对于有序的对象序列使用全面的模式匹配语言,但我最终只会遇到结构化事件的日志可能会发生一些有趣的事件间事件的情况。例如,在数据包嗅探网络中寻找更高级别的模式。也许还有一些我没有想到的其他数据挖掘应用程序?