如何匹配mysql中的整个单词?
例如,如果我输入' lau ',我不想要匹配' laura '或'劳伦斯”。
以下是我的工作查询,将“ lau ”与“ laura ”匹配
SELECT *
FROM
(
SELECT
p.page_id,
p.page_url AS url,
p.page_title AS title,
SUBSTRING_INDEX(p.page_content_1, ' ', 500) AS content,
EXTRACT(DAY FROM p.page_backdate) AS date,
EXTRACT(MONTH FROM p.page_backdate) AS month,
EXTRACT(YEAR FROM p.page_backdate) AS year
FROM root_pages AS p
WHERE p.page_hide != '1'
AND p.page_url != 'cms'
AND p.page_url != 'search'
ORDER BY p.page_created DESC
) x
WHERE x.content REGEXP '>[^<]*lau'
有什么想法修复我的REGEXP
?
我使用REGEXP '>[^<]*searchtext'
的原因是我的内容有html标签,例如
<p class="heading-sitemap">About us</p>
<ul>
<li class="subheading-sitemap">The team</li>
<li><a href="#">Introduction to gt</a></li>
<li><a href="#">Simon x</a></li>
<li><a href="#">Cathrin xe</a></li>
<li><a href="#">Patrick x</a></li>
<li><a href="#">Laurence x</a></li>
<li><a href="#">Tessa x</a></li>>
</ul>
我不想搜索可能属于<a href="http://laura.com">
等标签内的单词。
答案 0 :(得分:3)
让我们分解你目前的正则表达式:
>[^<]*lau
> match the character '>'
[^<]* match 0 or more non-'<' characters
lau match 'lau'
所以这符合以下内容:
>bbblau
>bbb<lau
>lau
><lau
我认为你想要的是匹配以下内容:
>lau
但不是:
>laubbb
><lau
>bbb<lau
在这种情况下,以下正则表达式将起作用:
>lau( |<|$)
编辑:使用andrewsi显示的方法可能更干净:
>lau[[:>:]]
答案 1 :(得分:2)
答案 2 :(得分:2)
andrewsi代码对我不起作用,但是这个REGEXP解决了我的问题。
m_city
REGEXP'[[:&lt;:]] YOUR_CITY [[:&gt;:]]'