0

mysqlで単語全体を一致させるにはどうすればよいですか?

たとえば、「lau」と入力した場合、「 laura」または「laurance 」と一致させたくありません

以下は、「 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">

4

3 に答える 3

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[[:>:]]
于 2012-06-20T18:11:38.280 に答える
2

これは機能しますか?

正規表現'[^<] * lau [[:>:]]'

ドキュメントによると、[[:>:]]は単語の末尾の単語境界に一致します

于 2012-06-20T18:11:20.137 に答える
2

andrewsiコードは私には機能しませんでしたが、このREGEXPは私の問題を解決しました。

m_cityREGEXP'[[:<:]] YOUR_CITY [[:>:]]'

于 2013-10-04T03:23:23.077 に答える