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 以^
或$
标记锚定,看起来像^bar
或bar$
。PCRE 需要使用标记进行显式锚定,而 SQLLIKE
语句是隐式锚定的,并且需要显式%
地创建“非锚定搜索模式”。
作为旁注,您可以使用类似于PostgreSQL 的东西用三元组索引这些类型的表达式pg_trgm