这个是杀了我,我是一个正则表达式的正面诺菜。 我试图进行网站搜索,并将输入的文本与中的标题列进行比较 数据库。 基本上我想用正则表达式完成的是 LIKE'%word1 word2 word3%',但是有一些字符串变量。
例如:
SELECT * FROM表WHERE标题REGEXP 'W [AO] RD'
工作得很好。它寻找单词和病房。但是,当我想要多个单词时,它什么都不返回。
SELECT * FROM表WHERE标题REGEXP 'w [ao] rd sec [或] nd th [io] rd'
我不想搜索单词或第二个或第三个我希望将它们全部放在标题中,就像LIKE中的大写一样。
我想可能会爆炸用户输入的搜索字符串,然后在foreach中逐字逐行地执行regexp,但不知道如何将所有变体连接到一个查询中。
编辑: 我忘了提到我在utf8_unicode_ci整理表中搜索。 所以我真的试图做一个[cčć] orak类型的搜索。
答案 0 :(得分:2)
SELECT * FROM table WHERE title REGEXP 'w[ao]rd|sec[or]nd|th[io]rd'
编辑:
“好的,所以你希望他们都按标题和顺序排列?”
SELECT * FROM table WHERE title REGEXP 'w[ao]rd.*sec[or]nd.*th[io]rd'
这将查找这些单词(和变体)并使它们按顺序排列,例如
word blahblah second more blah third