「CA」または「CA[任意の数字]」で終わらない任意の行に一致させたい。MySQLでrlikeを使用してそれを行うにはどうすればよいですか? (サポートしていないことに注意してください ?! など)。
正の一致の正規表現は次のとおりです。それを否定する方法が必要なだけです。 '^.*[C][A][0-9]?$'
(厄介なアーキテクチャの制限により、使用したくありませんnot rlike ...
)
トリックは、一致させたいものの説明に変えることです。次の場合、何かが CA または CA(数字) で終わらない:
Aまたは数字以外で終わる、または
A 以外の何かで終わり、次に数字、または
C 以外で終わり、次に A、次に数字、または
C以外の何かで終わり、次にA、または
A の後に数字が続く、または
Aまたは数字に等しい、または
それは空です。
そう:
rlike '[^A0-9]$|[^A][0-9]$|[^C]A[0-9]$|[^C]A$|^A[0-9]$|^[A0-9]$|^$'
テストされていない、「最適化されていない」、おそらく上記のどこかに少なくとも 1 つのエラーがあります。
正規表現はテーブルの列から取得されており、そこにあるパターンのほとんどはすでに機能しています。したがって、このパターンを既存の構造内で機能させることができれば、最も簡単です。
私はかつて同様のことをしました。私がしたことは、正規表現のオプション(大文字と小文字を区別しない、アンカー、否定など)を含む別の列(ビットフィールドを使用したと思います)を作成することでした。同様のアプローチがあなたのために働くかもしれません。