1

特定の形式のコマンドを受け入れる正規表現を作成しようとしています。パターンは次のとおりです。

$で始まり、次の2つの値0-9、AF、af(つまり、$ 00- $ FF)を持つことができます。または、「&<>'/」以外の任意の値にすることができます。

*値が$で始まる場合、00-ffからの有効な16進値である必要がある後の次の2つの値

これまでのところ私はこれを持っています

Regex correctValue = new Regex("($[0-9a-fA-F][0-9a-fA-F])");

どんな助けでも大歓迎です!

4

3 に答える 3

3

「$」の前に「\」記号を追加するだけで、次のように機能します。

        string input = "$00";

        Match m = Regex.Match(input, @"^\$[0-9a-fA-F][0-9a-fA-F]$");
        if (m.Success)
        {
            foreach (Group g in m.Groups)
                Console.WriteLine(g.Value);
        }
        else
            Console.WriteLine("Didn't match");
于 2012-08-01T02:08:19.237 に答える
2

私があなたを正しくフォローしている場合、$と2つの英数字の組み合わせもリストに含まれないため、探している最終結果はリスト「&<>'/」に含まれない値になります。したがって、あなたはあなたの表現をすることができます:

Regex correctValue = new Regex("[^&<>'/]");

更新:しかし、$ 00〜 $ FFを適切に一致させる方法を知る必要がある場合に備えて、これでうまくいきます。

Regex correctValue = new Regex("\$[0-9A-Fa-f]{2}");
于 2012-08-01T01:07:30.057 に答える
2

正規表現では、アンカーアサーション$に使用し、次のことを意味します。

一致は、文字列の最後、または行または文字列の最後の\nの前に発生する必要があります。

[$]代わりに、(単一文字の場合は文字クラス)または\$(文字エスケープ)を使用してみてください。

于 2012-08-01T04:25:43.010 に答える