20

いくつかの単語全体の式を MySQL REGEXP 関数と一致させようとしています。二重引用符が含まれている場合、問題があります。

MySQL のドキュメントには、「正規表現で特殊文字のリテラル インスタンスを使用するには、その前に 2 つのバックスラッシュ () 文字を付けます。」

しかし、これらのクエリはすべて 0 を返します。

SELECT '"word"' REGEXP '[[:<:]]"word"[[:>:]]';             -> 0
SELECT '"word"' REGEXP '[[:<:]]\"word\"[[:>:]]';           -> 0
SELECT '"word"' REGEXP '[[:<:]]\\"word\\"[[:>:]]';         -> 0
SELECT '"word"' REGEXP '[[:<:]] word [[:>:]]';             -> 0
SELECT '"word"' REGEXP '[[:<:]][[.".]]word[[.".]][[:>:]]'; -> 0

1を取得するために他に何を試すことができますか? それともこれは不可能ですか?

4

4 に答える 4

2

もう少し洗練する必要があります。

SELECT '"word"' REGEXP '"word"';                                      --> 1
SELECT '"This is" what I need' REGEXP '"This is" what I need[[:>:]]'; --> 1

あれは、

テスト文字列が「文字」で始まる/終わる場合、文字列の前/後に / があり[[:<:]]ます[[:>:]]

これは、やみくもにそれらを弦に取り付けるのとは対照的です。結局のところ、特殊な正規表現文字をエスケープするために検索文字列を既に調べています。これは、その意味での別のタスクです。「文字」の定義は、単語境界トークンが探すものと一致する必要があります。

于 2018-11-01T17:40:36.837 に答える