我的目标是使用 C++ 在二进制文件中查找 URI。我已经编写了告诉我给定字符串是否为正确 URI 的代码(例如,我的代码将针对“http://a.pl”返回 TRUE,针对“xdG:”返回 FALSE)。但是,我很难让它适用于整个文件。我不能逐字逐句地检查整个文件,因为 URI 可以隐藏在单词中的某处,例如
...href="http://a.pl">链接...
我想到的一个明显的解决方案是逐个字符地检查单词,所以首先 ...href="http://a.pl">link... 是否是一个 URI,然后 .. .ref="http://a.pl">链接...,然后...ef="http://a.pl">链接...等等。但这似乎是一个非常缓慢的解决方案。如何提高效率?
最佳答案
一个简单的解决方案(如果你想避免使用真正的解析器)是首先搜索 ://
,这应该非常简单和高效,并且必须是任何你感兴趣的URI(理论上可能还有其他的,如果你也需要,搜索:
即可)。然后通过检查 a-z
、A-Z
、 向后搜索方案(
、http
或 ftp
或其他) >0-9+
、-
和 .
。然后运行您的算法(希望它知道在哪里结束?)。
如果您只需要 http
-URI,您当然可以优化上面的内容以简单地查找 http://
然后调用您的算法。
关于c++ - 解析二进制文件以查找 C++ 中的 URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23446691/