java - 使用替换功能的通配符搜索

标签 java search wildcard

我尝试使用一些算法(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/

相关文章:

Java LocalDateTime解析

java - JTable 标题渲染器

php - 在 MySQL 数据库中搜索多列的特定语法?

c++ - g++ 在 Windows 上不使用通配 rune 件名进行编译

java - Bash Eval 无效命令

java - 带有代码 3xx 和空 'Location' header 的 HTTP 响应

search - SOLR中如何按日期排序?

azure - 长时间运行的 Azure 索引器引发 "Operation was cancelled"异常

java - 怎么 ?与所说的对象不同?

Java 8 泛型与通配符的问题