文字列内の単一のスタンディング文字 (2 つのスペースの間) と一致させるには、POSIX ERE 形式 (MySQL 用) の正規表現が必要です。
"abc d e f ghi"
に一致する必要があります"d e f"
私は正規表現 (PHP) について非常に基本的な知識しか持っていないため、これを MySQL で機能させることはできません...
更新: 私がやろうとしていることと私が使用している機能の詳細については、私の他の質問を参照してください:
文字列内の単一のスタンディング文字 (2 つのスペースの間) と一致させるには、POSIX ERE 形式 (MySQL 用) の正規表現が必要です。
"abc d e f ghi"
に一致する必要があります"d e f"
私は正規表現 (PHP) について非常に基本的な知識しか持っていないため、これを MySQL で機能させることはできません...
更新: 私がやろうとしていることと私が使用している機能の詳細については、私の他の質問を参照してください:
あなた" [a-z] "
がしたいことをしますか?
一般的なposixの方法:/ ([a-z]) /ig
ただし、MySQL RLIKEの場合は、次のようになります' [a-z] '
(場合は、列の照合に依存します)
MySQL の単語境界を使用する必要があります。
- [[:<:]]、[[:>:]]
これらのマーカーは、単語の境界を表します。それぞれ、単語の先頭と末尾に一致します。単語は、単語文字が前後にない一連の単語文字です。単語文字は、alnum クラスの英数字またはアンダースコア (_) です。
mysql> SELECT 'a word a' REGEXP '[[:<:]]word[[:>:]]'; -> 1 mysql>
したがって、MySQL 正規表現は[[:<:]][[:alpha:]][[:>:]]
. これは、質問者が実際に必要とするように、MySQL の任意のスタンディング アルファベット文字と一致します。ただし、スペースで囲まれた単なる非スペース文字の場合は、RegEx[[:<:]][^[:blank:]][[:>:]]
を使用する必要があります。
この単語境界構文はPOSIX ERE 標準にはありませんが、他の多くのツールには同様の構文があることに注意してください。たとえば、GNU grepは正規表現に '\<' と '\>' を使用して、左右の単語境界を意味します。