次の条件で単語に一致する正規表現を作成しようとしています:
- æøå や数字などの文字を含む単語に一致します。
- 単語に次のいずれかの文字が含まれている場合、その単語は無効です。
+ - & | ! ( ) { } [ ] ^ " ~ * ? : \
たとえば、次の単語は問題ありません。
testæøå
test12
12test
しかし、これらは失敗するはずです:
t+st 検定
&st
のようなものはどうですか[^+\-|!(){}\[\]\^"~*?:\\]+
。これは、除外する文字が含まれていないものと一致します。[
囲みの中でメタ文字を正しくバックスラッシュしたことを確認する必要があります。]
ご存じないかもしれませんが、C# の正規表現は文字列操作よりもはるかに低速です: C# の正規表現
ただし
、Regex.Compiled を使用して最適化すると、速度を上げることができます。ただし、これによりプログラムの起動が遅くなります。これが何らかの Web ベース (C#/Silverlight) になる場合は、文字列操作と Regex での検索を使用することを強くお勧めします。
文字の Unicode または ASCII コードを簡単に照合し、そこから単語を受け入れ/拒否することができ、パフォーマンスが大幅に向上します。
正規表現を使用することに決めた場合は、正規表現を使用した文字列操作ではるかに高速な Perl またはその他のスクリプト言語を検討してください。