1

ファイルからすべての非ASCII文字を取り除くファイルユーティリティを作成します。私はこの正規表現を持っています:

Regex rgx = new Regex(@"[^\u0000-\u007F]");

これは問題なく動作します。しかし、残念ながら、一部の愚かな人々がファイルの区切り文字として直角(¬)を使用していることを発見したので、これらも削除されますが、私はそれらが必要です!

私は正規表現にかなり慣れていません。基本は理解していますが、どんな助けでも素晴らしいでしょう!

前もって感謝します!

4

2 に答える 2

3

セットに山かっこのコードポイントを含める必要があります。

これを試して:

Regex rgx = new Regex(@"[^\uxxxx\u0000-\u007F]");

またはこれ:

Regex rgx = new Regex(@"[^\uxxxx-\uxxxx\u0000-\u007F]");

(ここで、xxxxは、保持する文字のUnicodeコードポイントです。)

ここで2つのオプションを指定する理由は、1つの負の文字グループ内で複数の範囲を指定できることは知っていますが、個々の文字を範囲と一致させることができるかどうかはわかりません。

于 2010-11-15T11:33:31.917 に答える
1

ジョンの答えは絶対に正しいです。キャラクターに間違ったコードを使用している可能性があります。似たようなキャラクターについては、次のことを試してください。

Regex regex = new Regex(@"([^\u00ac\u0000-\u007F])");
Regex regex = new Regex(@"([^\u02fa\u0000-\u007F])");
Regex regex = new Regex(@"([^\u031a\u0000-\u007F])");

最初のものはうまくいくはずだと思います。

于 2010-11-15T12:18:54.947 に答える