在一大串随机字符中查找一串随机字符(可能有错误)

时间:2010-04-01 07:14:55

标签: java regex

我正在尝试搜索没有空格的大字符串以获得较小的字符串。使用正则表达式我可以很容易地找到完美的匹配,但我无法弄清楚如何找到部分匹配。部分匹配是指字符串中的一个或两个额外字符或已更改的一个或两个字符,或者每个字符中的一个。但是第一个和最后一个字符总是匹配。这将类似于拼写检查,但没有空格,字符串不包含实际单词,只是随机的十六进制数字。

如果使用indexOf(string.charAt(0))和indexOf(charAt(string.length() - 1)并循环遍历两个索引之间的字符,我想方法找到字符串。但是在处理随机字符时这可能会有问题,因为有可能找到正确间距的第一个和最后一个字符,但没有中间字符匹配。

在这个问题上,我一直在摸不着头脑。任何想法?

3 个答案:

答案 0 :(得分:1)

Here's an article我发现这显示了一个简单的拼写检查程序是如何工作的。我知道你不是在进行拼写检查,但想法是相似的。

这提醒了我一点nearest neighbor algorithm。我用最近邻算法做手势识别。但是这些手势实际上只是一个2d点的数组,我会用最近邻来确定哪个手势看起来最接近那个手势,即使这些点不完全相同。在我看来,你可能能够按照你想做的事情做同样的事情。

答案 1 :(得分:0)

假设您的搜索字符串长度为6个字符,并且第一个和最后一个字符为“A”和“Z”,那么

A.{4}Z

将匹配较大字符串中的任何子字符串,其中第一个和最后一个字符以正确的间距匹配。

这就是你需要的吗?

答案 2 :(得分:0)

您要做的事情很像生物信息学家匹配DNA序列之类的字符串匹配。这属于sequence alignment一词。