好吧,伙计们,我真的伤害了我的大脑,而我很好奇,如果你们能给我任何指向我应该采取的正确方向。基于未知模式匹配无与伦比的字符串
的情况是这样的:
比方说,我有一个字符串(让它很清楚,这个字符串的模式是未知的一个事实,我可以说,该字符串只包含从招牌的集合。 ASCII表,因此,我不必担心奇怪的中国标志)。
在这个例子中,我把字符串的集合如下(注意,字符串不作任何人的感觉,所以不要尝试盘算出来:)):
"[001].[FOO].[TEST] - 'foofoo.test'",
"[002].[FOO].[TEST] - 'foofoo.test'",
"[003].[FOO].[TEST] - 'foofoo.test'",
"[001].[FOO].[TEST] - 'foofoo.test.sample'",
"[002].[FOO].[TEST] - 'foofoo.test.sample'",
"-001- BAR.[TEST] - 'bartest.xx1",
"-002- BAR.[TEST] - 'bartest.xx1"
现在,我需要的是找到这组字符串的逻辑组(和子组),所以在上面的例子中,通过理性思考,你可以将前3个,后2个和后2个组合起来。从第5,得到的组可以在一个主组与2个亚类,这应该给你这样的事情:
{
{
"[001].[FOO].[TEST] - 'foofoo.test'",
"[002].[FOO].[TEST] - 'foofoo.test'",
"[003].[FOO].[TEST] - 'foofoo.test'",
}
{
"[001].[FOO].[TEST] - 'foofoo.test.sample'",
"[002].[FOO].[TEST] - 'foofoo.test.sample'",
}
}
{
{
"-001- BAR.[TEST] - 'bartest.xx1",
"-002- BAR.[TEST] - 'bartest.xx1"
}
}
对不起,上面的布局,但缩进4空格似乎并不正确(或我frakk'n它了)。
无论如何,我不知道如何解决这个问题(如何得到如上所示的结果)。
首先,我想创建一个庞大的正则表达式集,它可以解析大多数已知的模式,但是不同模式的数量只是巨大的,这是不现实的。
另一个想法是解析字符串中的每个单词(所以去除所有非字母或数字字符并拆分),如果X%匹配,我可以假设这些字符串属于同一组。 (其中X可能在80/90左右)。不过,我觉得这个投机领域有点大。例如,当匹配每20个单词的字符串时,击中80%以上的变化有点大(即4个单词可以不同),但是只匹配8个单词时,最多可以有2个单词不同。
我给你的问题是,在上述情况下,什么是合乎逻辑的方法?
至于现实生活中的例子:
提前感谢!
欢呼你所有人,这些答案是一个好方法。我会马上开始建立这些概念,谢谢! – Polity 2010-04-03 15:13:14
请稍后再回来让我们知道你是怎么做的! – 2010-04-18 20:56:56