Wildcard matching in Java

前端 未结 6 1907
渐次进展
渐次进展 2020-12-14 23:13

I\'m writing a simple debugging program that takes as input simple strings that can contain stars to indicate a wildcard match-any

*.wav  // matches 

        
6条回答
  •  眼角桃花
    2020-12-14 23:41

    Lucene has classes that provide this capability, with additional support for backslash as an escape character. ? matches a single character, 1 matches 0 or more characters, \ escapes the following character. Supports Unicode code points. Supposed to be fast but I haven't tested.

    CharacterRunAutomaton characterRunAutomaton;
    boolean matches;
    characterRunAutomaton = new CharacterRunAutomaton(WildcardQuery.toAutomaton(new Term("", "Walmart")));
    matches = characterRunAutomaton.run("Walmart"); // true
    matches = characterRunAutomaton.run("Wal*mart"); // false
    matches = characterRunAutomaton.run("Wal\\*mart"); // false
    matches = characterRunAutomaton.run("Waldomart"); // false
    characterRunAutomaton = new CharacterRunAutomaton(WildcardQuery.toAutomaton(new Term("", "Wal*mart")));
    matches = characterRunAutomaton.run("Walmart"); // true
    matches = characterRunAutomaton.run("Wal*mart"); // true
    matches = characterRunAutomaton.run("Wal\\*mart"); // true
    matches = characterRunAutomaton.run("Waldomart"); // true
    characterRunAutomaton = new CharacterRunAutomaton(WildcardQuery.toAutomaton(new Term("", "Wal\\*mart")));
    matches = characterRunAutomaton.run("Walmart"); // false
    matches = characterRunAutomaton.run("Wal*mart"); // true
    matches = characterRunAutomaton.run("Wal\\*mart"); // false
    matches = characterRunAutomaton.run("Waldomart"); // false
    

提交回复
热议问题