我尝试使用一些算法(k-gram 算法等)在我的应用程序中实现通配符搜索,但它非常复杂。
直到我找到这段代码,它工作得很好..但我不知道它是如何检查并得到结果的!
代码:
public static boolean wildCardMatch(String text, String pattern)
{
return text.matches( pattern.replace("?", ".?").replace("*", ".*?") );
}
他们有人帮我知道它是如何工作的吗? replace函数是什么意思?
最佳答案
你说的是 glob pattern .
在 Java 世界中,glob 模式更常被转换为正则表达式模式。
在您的场景中,实现非常基本:replace
方法用于将所有出现的 ?
替换为正则表达式等效的 .?
。然后所有出现的 *
都被替换为 .*?
。
因此,如果您有以下 glob 模式:abc*.def
,则正则表达式将变为 abc.*?.def
。
当正则表达式最终准备就绪时,使用matches
方法检查变量text
。后一种方法接受正则表达式作为输入。
关于java - 使用替换功能的通配符搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34514650/