単語と一致させることができます。このREGEXP
の単語境界[[:<:]]Burger[[:>:]]
には、バーガーが入ります。しかし、私はバーガー(チーズ)の項目があり、単語境界[[:<:]]Burger (Cheese)[[:>:]]
で見ることができません。単語境界に2つの単語とかっこを入れるにはどうすればいいですか?2つの単語の中に括弧を入れたMySQLの単語境界
1
A
答えて
1
確かに、WHERE ... REGEXP '[[:<:]]Burger (Cheese)[[:>:]]'
はBurger (Cheese)
と一致しません。
最初の問題は、かっこも探していないことです。 (
と)
は正規表現で特別な意味を持ち、グループを定義するために使用されるため、エスケープする必要があります。しかし、正規表現(バックスラッシュ)のエスケープ文字は文字列と同じです。正規表現は文字列の中にあり、バックスラッシュもエスケープする必要があります:\\(
。
ただし、WHERE ... REGEXP '[[:<:]]Burger \\(Cheese\\)[[:>:]]'
はいずれにも一致しません。なぜ2番目の問題になりますか? [[:>:]
は、ワード境界が、parenthesis is not a word characterに一致します。
単語文字が
alnum
クラスの英数字またはアンダースコア(_
)です。
単語が最後e
で終わるので、あなたは、もはや(Cheese)
文字列ので[[:>:]
ワード境界を持っていません。
ロジックを再考する必要があります。それはあなたのスペックをスイート場合は、例えば、式の最後に閉じ括弧を追加することができます。
mysql> SELECT *
-> FROM (
-> SELECT 'Burger' AS foo
-> UNION ALL SELECT 'Burger (Cheese)'
-> UNION ALL SELECT 'Yet Another Burger'
-> UNION ALL SELECT 'Burger Extras'
-> UNION ALL SELECT 'Coffee'
->) x
-> WHERE foo REGEXP '[[:<:]]Burger \\(Cheese([[:>:]]|\\))';
+-----------------+
| foo |
+-----------------+
| Burger (Cheese) |
+-----------------+
1 row in set (0.00 sec)
関連する問題
- 1. 単語境界の使用
- 2. Matlabの角括弧の中に2つの単語がありますか?
- 3. Androidの単語境界正規表現
- 4. 境界に単語を分割する
- 5. 括弧内の単語を除くすべての単語とのマッチング方法は? [MySQL]
- 6. 単語境界を変更するintelij
- 7. 文字の範囲が限定された単語の境界
- 8. 単語境界正規表現問題
- 9. 正規表現(\ B)の単語境界ではない単語境界は何ですか?
- 10. 単語境界を持つ正規表現の結合
- 11. Perlを使って文中の単語境界と単語を一致させる正規表現ですか?
- 12. 単語境界をまたいだSOLRインデックスの検索
- 13. 括弧内の単語を抽出するSwift正規表現
- 14. 引用符で囲まれた角括弧内の単語の選択/削除
- 15. UTF8バッファから各単語の単語境界と言語を検出します。
- 16. のPerlの正規表現の単語境界等価
- 17. 正規表現の単語境界の代替
- 18. マルチバイト文字列の正規表現の単語境界
- 19. ハイフンを除く正規表現の単語境界
- 20. Regex - 境界内の単語を取り込みます
- 21. RのGrepでカスタムの "拡張"境界を持つ単語を探す
- 22. Javascript RegExp:単語の境界と句読点
- 23. 定義済みの単語バンクから入力された単語+単語を返すjavascriptアプリ
- 24. 2つの単語のJavascriptの違い
- 25. zshの2つの単語のエイリアス
- 26. 他の2つの単語間の正規表現のマッチングの単語(Matlab regexp)
- 27. 単語境界のJavaScript正規表現で、単語内ハイフンとアポストロフィを使用する
- 28. 指定された文字列内の2つの特定の単語の間の単語を印刷する
- 29. lpegを使って単語境界だけをキャプチャする
- 30. プログラミング中の単語 "but"
私はあなたのおかしいスマイリーは言葉の隣にするためのものであるかわからないが、私のために働くようです。 .. http://www.phpliveregex.com/p/fQN – Andreas
あなたはコードを表示しませんが、カッコは正規表現で特別な意味を持っていますので、リテラルを検索するためにはエスケープする必要があります。 –
@ÁlvaroGonzález - それはちょうどちょうど私がMySQLで使用する 'REGEXP'を追加するコードです。 –