当您搜索字符串的中间而不是开头时,它叫什么?

dan*_*317 20 terminology regex string-searching

我正在努力提高我的词汇量,以便更好地与我的开发人员交流。我们在站点中有几个地方正在讨论是否应该从头开始搜索字符串,还是应该在字符串中的'running%'任何位置搜索'%running%

我一直将中间搜索称为“模糊”,我意识到这是不正确的,因为模糊意味着改变单词“run”、“runing”[原文如此]、“runed”[原文如此]的形式。

搜索字符串开头和搜索字符串中间的正确术语是什么?

Eva*_*oll 24

它被称为“非锚定搜索模式”,在 SQL 中看起来像这样。

foo LIKE '%bar%'
Run Code Online (Sandbox Code Playgroud)

如果%在任一侧都缺少 a ,则表示搜索模式分别锚定到字符串的开头或结尾。这个行话来自正则表达式世界。

foo LIKE 'bar%'
Run Code Online (Sandbox Code Playgroud)

你会说,“搜索模式bar%锚定到字符串的开头”。

为了比较,PCRE 以^$标记锚定,看起来像^barbar$。PCRE 需要使用标记进行显式锚定,而 SQLLIKE语句是隐式锚定的,并且需要显式%地创建“非锚定搜索模式”

作为旁注,您可以使用类似于PostgreSQL 的东西用三元组索引这些类型的表达式pg_trgm