我正在尝试根据标题的第一个字母查询图书标题的数据库。但是,我想忽略常用词,例如“The”和“A”。
因此,在搜索以字母“T”开头的书籍时
"The Adventures of Huck Finn" - would NOT be matched
"Transformation of a Runner" - would be matched
我对REGEX不是很有经验,但这是我到目前为止($ first_letter可能等于't')
... WHERE title = '^[(a )(the )]*[$first_letter]' ...
这甚至在单词“A”或“The”之后成功匹配以特定字母开头的书名,但不会忽略这些单词。因此,如果$ first_letter ='t',它将匹配上面提到的两本书。
我试过谷歌搜索,但没有找到任何解决方案。任何帮助将不胜感激。
提前致谢。
凯文
答案 0 :(得分:2)
答案 1 :(得分:2)
您编写的正则表达式无效。 []
用于表示所谓的字符类。您在括号中输入的所有内容(某些字符可能需要转义,例如文字字符[
和]
)都被视为单个字符的替身
编辑重新阅读我的答案后,我意识到环视并不是解决此问题的好方法。
您正在摸索的功能称为负向前瞻,负面后瞻或某些类似变体。我不确定MySQL的正则表达式是否支持它,但我认为它不适合这个问题。
或者,您可以执行如下所示的正则表达式:
^((a|the|of|and) )?[letter of interest]
细分:
?
断言该群组可能有0
或1
个实例你必须自己完成将其转换为MySQL正则表达式语法的工作。道歉。