我的目标是使用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”>链接......依此类推。但这似乎是一个非常缓慢的解决方案。我怎样才能提高效率呢?
答案 0 :(得分:0)
一个简单的解决方案(如果你想避免使用真正的解析器)将首先搜索://
,这应该是非常简单和有效的,并且必须是你感兴趣的任何URI的一部分(理论上,可能还有其他人,如果你也需要它们,只需搜索:
)。然后通过检查http
,ftp
,a-z
,A-Z
,{{向后搜索方案(0-9
或+
或其他) 1}}和-
。然后运行你的算法(希望知道在哪里结束?)。
如果您只需要.
- URI,您当然可以优化上述内容,只需查找http
,然后再调用您的算法。