1

「CA」または「CA[任意の数字]」で終わらない任意の行に一致させたい。MySQLでrlikeを使用してそれを行うにはどうすればよいですか? (サポートしていないことに注意してください ?! など)。

正の一致の正規表現は次のとおりです。それを否定する方法が必要なだけです。 '^.*[C][A][0-9]?$'

(厄介なアーキテクチャの制限により、使用したくありませんnot rlike ...)

4

2 に答える 2

6

トリックは、一致させたいものの説明に変えることです。次の場合、何かが 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 つのエラーがあります。

于 2008-12-03T06:10:45.717 に答える
2

正規表現はテーブルの列から取得されており、そこにあるパターンのほとんどはすでに機能しています。したがって、このパターンを既存の構造内で機能させることができれば、最も簡単です。

私はかつて同様のことをしました。私がしたことは、正規表現のオプション(大文字と小文字を区別しない、アンカー、否定など)を含む別の列(ビットフィールドを使用したと思います)を作成することでした。同様のアプローチがあなたのために働くかもしれません。

于 2008-12-02T19:01:09.593 に答える