我正在寻找一种能够在字符串中找到重复出现的模式的算法。
我有一串包含交易的数据。 每个事务都包含属性(名称/值)。 这些事务的格式未知,它们可能是JSON,XML或任何其他字符串格式。 但是,无论它们的格式如何,其结构都与它们的结构相同,尽管它们的内容可能会发生变化。 我想使用一种算法,它可以根据重复模式(未知)识别字符串中的事务。
例如,以下字符串包含2个事务:
<m><a>Hello</a><b>World</b></m><m><a>Good</a><b>Bye</b></m>
以下字符串还包含2个事务:
##start##First Transaction##end####start##Second Transaction##end
我应该使用什么算法?
答案 0 :(得分:1)
我没有解决方案,但有些人想到了这个问题:
您可以尝试将输入拆分为块,并在这些块上使用一种diff
算法。有了足够的样本,您就可以识别出分隔符。
我试图区分以下字符串:
<m><a>Hello</a><b>World</
b></m><m><a>Good</a><b>Bye</b></m>
它给了我以下分隔符:
<m><a>
</a><b>
愚蠢地说,你应该用更多的样本和不同的块大小来重复操作。这会给你可能的分隔符,而不是100%肯定的答案。
http://en.wikipedia.org/wiki/Longest_common_subsequence_problem
另外,您可以查看本文使用n-gram频率查找分隔符: