Krauss correspondência algoritmo wildcards - Krauss matching wildcards algorithm

Em ciência da computação , o algoritmo wildcards correspondentes Krauss é um padrão de correspondência algoritmo. Com base na sintaxe curinga de uso comum, por exemplo, no Microsoft Windows interface de linha de comando , o algoritmo fornece um não- recursiva mecanismo para padrões de correspondência em aplicações de software, baseado em sintaxe mais simples do que normalmente oferecido pelo expressões regulares .

História

O algoritmo é baseado em uma história de desenvolvimento, correção e testes de desempenho e feedback programador que começou com uma busca sem sucesso por um algoritmo não-recursivo confiável para wildcards correspondência. Um algoritmo inicial, implementado num único loop while, solicitado rapidamente comentários de desenvolvedores de software, levando a melhorias. Comentários em curso e sugestões culminaram com um algoritmo revisto ainda implementado num único loop while, mas refinado com base em um conjunto de casos de teste e um profiler desempenho . A experiência afinar a única while loop usando o profiler solicitado o desenvolvimento de uma estratégia de duas loop que alcançou ganhos adicionais de desempenho, particularmente em situações que envolvem cadeias de entrada vazias ou de entrada que não contenham caracteres curinga. O algoritmo de dois ciclo está disponível para uso pelo software open-source comunidade de desenvolvimento, nos termos da Apache License v. 2.0, e é acompanhado por código caso de teste.

Uso

O algoritmo disponibilizados sob a licença Apache é implementado em ambos ponteiro baseado C ++ e C ++ portáteis (implementado sem ponteiros). O código de caso de teste, também disponível sob a licença Apache, pode ser aplicado a qualquer algoritmo que fornece as operações padrão de harmonização abaixo. A implementação como codificado é incapaz de lidar com conjuntos de caracteres de vários bytes e coloca problemas quando o texto a ser pesquisado pode conter vários conjuntos de caracteres incompatíveis.

operações de correspondência de padrão

O algoritmo suporta três operações de correspondência de padrões:

  • Uma correspondência de um-para-um é realizada entre o padrão e a fonte a ser verificada por um jogo, com a excepção de asterisco ( * ) ou de interrogação ( ? ) Caracteres no padrão.
  • Um asterisco ( * personagem) corresponde a qualquer sequência de zero ou mais caracteres.
  • Um ponto de interrogação ( ? Personagem) corresponde a qualquer caractere único.

Exemplos

  • * foo * corresponde a qualquer cadeia que contém "foo".
  • mini-* corresponde a qualquer cadeia que começa com "mini" (incluindo os "mini" da corda em si).
  • ??? * corresponde a qualquer cadeia de três ou mais letras.

aplicações

O algoritmo original foi portado para o DataFlex linguagem de programação por Larry Heiges para uso com o Data Access Worldwide biblioteca de código. Ele foi postado no GitHub em forma modificada, como parte de um leitor de arquivo de log. O algoritmo de 2014 é parte do Unreal Model Viewer embutido no Epic Games Unreal Engine motor de jogo .

Veja também

Referências