除了字符串之外的序列的正则表达式

时间:2015-07-20 21:31:58

标签: regex language-agnostic

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

例如,如果我有Buffalo个对象的列表,我想检查我的列表是否匹配5到7英尺高的4到7 Buffalo,然后是白色Buffalo之后是4-7 Buffalo的反向引用,然后是列表的结尾,是否有引擎支持这样的事情?

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

通常,正则表达式与底层对象本身的相等概念密切相关。除此之外,还有一个与#34; regular expression"的概念相悖的附加功能集。

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

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