2

不思議なことに、MySQL正規表現の角括弧内でリテラルとして安全に使用できない文字のリストを、エスケープしたり、何かを使用したりせずに見つけることができないようです[:character_class:]

(また、MySQLの正規表現はPerl / PHP / Javascriptなどの正規表現に比べて不足しているように見えるため、答えはおそらくMySQL固有である必要があります)。

4

2 に答える 2

4

ほとんどすべてのメタ文字 (ドット.、 、+*指定子?、文字列の終わりアンカー$などを含む) は、いくつかの注目すべき例外を除いて、文字クラスでは特別な意味を持ちません。

  • ]明らかな理由から、閉じ括弧
  • 文字^クラスを否定するために使用されます (例: and以外の任意の文字[^ab]一致します)。 ab
  • -範囲を示すために使用されるハイフン(例:[0-9]任意の数字に一致)

ただし、キャラクタークラス内の戦略的な場所に配置されている場合、これらはエスケープせずに追加できます。

  • 閉じ括弧は、開き括弧の直後に置くことができます。例:[]a]マッチ]またはa.
  • キャレットは、開始ブラケットの後以外の任意の場所に配置できます。例:[a^]マッチ^またはa
  • ハイフンは、開き括弧の直後または閉じ括弧の前に配置[-a]でき[a-]ます。a-

詳細については、POSIXregexの man ページを参照してください(Tomalak Geret'kal に感謝します!)。

于 2011-11-15T18:34:42.907 に答える
0

documentationから、上部のすぐ近く:

このセクションでは、例を挙げて、MySQL で REGEXP 操作に使用できる特殊文字と構造を要約します。Henry Spencer の regex(7) マニュアル ページにあるすべての詳細が含まれているわけではありません。このマニュアル ページは、MySQL ソース配布の regex ディレクトリにある regex.7 ファイルに含まれています。

上記のマンページはここにコピーされています(ありがとう、Google!)。あなたが探している情報はそこにあります。

于 2011-11-15T18:36:23.427 に答える