2010-04-01 4 views
2

더 작은 문자 열에 대해 큰 문자열에 공백없이 검색하려고합니다. regex를 사용하면 완벽한 일치를 쉽게 찾을 수 있지만 부분 일치를 찾는 방법을 찾을 수는 없습니다. 부분 일치는 문자열에있는 하나 또는 두 개의 추가 문자 또는 변경된 하나 또는 두 개의 문자 또는 각 문자 중 하나를 의미합니다. 처음과 마지막 문자는 항상 일치합니다. 이것은 맞춤법 검사기와 비슷하지만 공백이없고 문자열에 실제 단어가 포함되지 않으며 임의의 16 진수 만 포함됩니다.임의의 문자의 큰 문자열 내에서 임의의 문자 (가능한 오류 포함) 문자열을 찾습니다.

indexOf (string.charAt (0)) 및 indexOf (charAt (string.length() - 1)를 사용하여 추가 문자가없는 경우 문자열을 찾고 두 인덱스 사이의 문자를 반복하는 방법을 찾았습니다 그러나 이것은 정확한 간격으로 첫 문자와 마지막 문자를 찾을 가능성이 있기 때문에 임의 문자를 처리 할 때 문제가 될 수 있습니다.

저는이 문제에 몇 시간 씩 머리를 쓰다듬어 왔습니다. 어떤 아이디어?

+0

중복 된 http://stackoverflow.com/questions/327513/fuzzy-string-search-in-java? –

답변

1

Here's an article 간단한 맞춤법 검사기가 작동하는 방법을 보여주었습니다. 맞춤법 검사를하지는 않지만 아이디어는 비슷할 것입니다.

이것은 다소 nearest neighbor algorithm을 상기 시켰습니다. 제스처 인식을 수행하기 위해 가장 가까운 이웃 알고리즘을 사용했습니다. 그러나 제스처는 실제 2 차원 점의 배열이었고 가장 가까운 이웃을 사용하여 어떤 제스처가 그 제스처에 가장 가까운 것처럼 보였습니다. 점이 정확히 동일하지 않더라도 말입니다. 당신이하려고하는 것과 같은 라인을 따라 뭔가를 할 수있을 것 같습니다.

A.{4}Z 

더 큰 문자열의 모든 문자열을 일치합니다

+0

나중에 알고, 나는 샘플 맞춤법 검사기 프로그램에 대한 모든 검색 및 관련 아무것도 찾을 수 없습니다. 불행히도 나는 파이썬에 익숙하지 않지만, C와 Java를 알고 있으므로 아마 이해할 수있을 것이다. 고맙습니다. 그것이 내 문제를 해결하면 아픈 포스트. – mike

+0

그냥 자바 소스에 대한 하단의 링크를 발견했지만 그것은 내가 예상했던 것보다 조금 더 고급이며 주로 맞춤법이 틀린 단어를 대체에 초점을 맞추고 있습니다. 솔직히, 나는 머리 나 꼬리를 만들 수 없다. 가장 가까운 이웃 알고리즘으로 잘못 본다. – mike

0

6 자, 말, 검색 문자열이 있다고 가정하고, 첫 번째와 마지막 문자는 "A"와 "Z"되는 곳 첫 번째 문자와 마지막 문자가 올바른 간격으로 일치합니다.

그게 필요한가요?

0

당신이하려는 것은 생물 정보 학자들이 DNA 서열 등을 맞추는 것과 같은 종류의 문자열 매칭과 비슷합니다. 이것은 sequence alignment이라는 용어 아래에 있습니다.

관련 문제