私の仕事は、さまざまな文字列のエントリのブラックリストを作成することです。を使用して、データベース内のエントリを確認していますMySQL。
MySQLおそらく、 :
の単語境界マーク[[:<:]]と、デフォルトの正規表現[[:>:]]に対応する単語境界マークについて知っているでしょう。\b
regexp special characters文字列に and があると、何かがおかしくなるword boundary marks。
しかし、それらの文字は二重のバックスラッシュでエスケープされます!
このクエリを実行するだけです
SELECT
"test()" REGEXP "[[:<:]]test\\(\\)[[:>:]]",
"test()" REGEXP "test\\(\\)",
"test" REGEXP "[[:<:]]test[[:>:]]",
"test" REGEXP "test" ;
そして、あなたは得るでしょう
0 | 1 | 1 | 1
期待の代わりに
1 | 1 | 1 | 1
誰かが問題を解決する方法を説明してもらえますか?