/ / encontrar una cadena de caracteres aleatorios (con posibles errores) dentro de una cadena grande de caracteres aleatorios - java, regex

encontrar una cadena de caracteres aleatorios (con posibles errores) dentro de una cadena grande de caracteres aleatorios - java, regex

Estoy tratando de buscar una cadena grande w / o espaciospara una cadena más pequeña de caracteres. Usando Regex puedo encontrar fácilmente coincidencias perfectas, pero no puedo averiguar cómo encontrar coincidencias parciales. Por coincidencias parciales, quiero decir uno o dos caracteres adicionales en la cadena o uno o dos caracteres que se han cambiado, o uno de cada uno. Sin embargo, el primer y último carácter siempre coincidirán. Esto sería similar a un corrector ortográfico, pero no hay espacios y las cadenas no contienen palabras reales, solo dígitos hexadecimales aleatorios.

Pensé una manera de encontrar la cadena si hayno hay caracteres adicionales utilizando indexOf (string.charAt (0)) e indexOf (charAt (string.length () - 1) y repitiendo los caracteres entre los dos índices, pero esto puede ser problemático cuando se trata de caracteres aleatorios debido a la posibilidad de encontrar el primer y último carácter con el espaciado correcto pero ninguno de los caracteres intermedios coinciden.

Llevo horas rascándome la cabeza en este tema. ¿Alguna idea?

Respuestas

1 para la respuesta № 1

Aquí hay un artículo. Encontré que muestra cómo funcionaría un simple corrector ortográfico. Sé que no estás haciendo una revisión ortográfica, pero las ideas serían similares.

Esto me recordó un poco a la algoritmo del vecino más cercano. He usado el algoritmo vecino más cercano para hacerhacer reconocimiento de gestos. Pero los gestos eran en realidad solo una serie de puntos 2d, y usaría el vecino más cercano para determinar qué gesto parece más cercano a ese gesto, incluso si los puntos no fueran exactamente iguales. Me parece que es posible que pueda hacer algo en esa misma línea con lo que estás tratando de hacer.


0 para la respuesta № 2

Suponiendo que su cadena de búsqueda tiene, digamos, 6 caracteres de longitud, y que el primer y último carácter son "A" y "Z", entonces

A.{4}Z

coincidiría con cualquier subcadena en la cadena más grande donde los caracteres primero y último coinciden en el espaciado correcto.

Es eso lo que necesita?


0 para la respuesta № 3

Lo que estás tratando de hacer es muy parecido al tipo de combinación de cadenas que hacen los bioinformáticos para hacer coincidir las secuencias de ADN y similares. Esto va bajo el término alineación de secuencias.