regex - 在二进制文件中查找代码片段

标签 regex algorithm context-free-grammar

我有一个 ASCII 垃圾二进制文件,比方说,其中某处包含一些 XML 代码片段。

我正在寻找可以在此二进制文件中找到这些 XML 片段的(最好是快速的)算法。

(就像正则表达式,但使用上下文无关语法进行模式匹配。)

我也想以某种方式将算法推广到其他上下文无关文法。

有什么想法吗?

最佳答案

通常解析器会解析一个应该属于该语言的句子,而不是一个任意的句子,其中属于该语言的句子隐藏在其中。

我建议您使用语法和正则表达式的开始符号来检查 ASCII 垃圾中的它,一旦找到它,就对以该符号开始的文本和句子的其余部分使用解析器,然后查看解析器因错误而停止解析的位置。然后你必须根据错误发生的位置来判断 JS 代码是否正确。

我不知道有什么算法可以开箱即用地完成您想要的操作,但我猜想以前可能有人需要这个,因为它实际上很有用。也许你能在书中找到一些有趣的东西Parsing Techniques由 Grune 和 Jacobs 撰写。

关于regex - 在二进制文件中查找代码片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8491525/

相关文章:

Java Regex - 不是空字符串,只有数字,8 个字符长

java - 通过正则表达式匹配csv文件中的空行

c++ - 支持表查找的数据结构

parsing - 这些语法和识别它的最小解析器怎么样?

algorithm - 如何使用解析树求解表达式?

java - 数字/货币格式

javascript - 未捕获的语法错误 : Invalid regular expression flags

javascript - 求和对的唯一排列 : Javascript Algorithm

algorithm - 优化DNF谜题的SAT约束

java - 创建解析树以确定给定的 LL 语法的正确性