2

ブラウザゲームの座標を合わせたい。私の正規表現は次のとおりです。

        try
        {
            Regex r = new Regex("Mond ([1-9]) \x5B([1-9]):([1-9][0-9]{0,2}):([1-9][0-9]{0,2})\x5D");
            Match m = r.Match("Mond 1 [1:1:1]");
        }
        catch (ArgumentException ex)
        {
            Console.WriteLine(ex);
        }

エラーは次のとおりです。

System.ArgumentException: "Mond ([1-9]) [([1-9]):([1-9][0-9]{0,2}):([1-9][0-9] ]{0,2})]" wird analysiert - Zu viele )-Zeichen. System.Text.RegularExpressions.RegexParser.ScanRegex() System.Text.RegularExpressions.RegexParser.Parse(String re, RegexOptions op) System.Text.RegularExpressions.Regex..ctor(String pattern, RegexOptions options, Boolean useCache) bei WindowsFormsApplication7.Form2.comboBox1_SelectedIndexChanged(Object sender, EventArgs e) in C:\Users\Heavyfan\Documents\Visual Studio 2008\Projects\WindowsFormsApplication7\WindowsFormsApplication7\Form2.cs:Zeile 27. Eine Ausnahme (erste Chance) des Typs "System .ArgumentException" は System.dll aufgetreten にあります。

私の正規表現の問題は何ですか?

私の悪い英語でごめんなさい。解像度の Thx。

4

5 に答える 5

3

エラー メッセージがわかりませんでしたが、エスケープの問題のようです。バックスラッシュがエスケープされていません。正規表現を次のいずれかに変更します。

//verbatim 
Regex r = new Regex(@"Mond ([1-9]) \x5B([1-9]):([1-9][0-9]{0,2}):([1-9][0-9]{0,2})\x5D");

//or escaped
Regex r = new Regex("Mond ([1-9]) \\x5B([1-9]):([1-9][0-9]{0,2}):([1-9][0-9]{0,2})\\x5D");
于 2009-12-10T09:27:11.937 に答える
1

\x5B と \x5D はそれぞれ [ と ] に変換されるため、これは無効な正規表現になります。

これらを直接エスケープしてみてください: \[ and \].

于 2009-12-10T09:26:39.493 に答える
0

キャラクターを2倍にする必要があります\

   try
    {
        Regex r = new Regex("Mond ([1-9]) \\x5B([1-9]):([1-9][0-9]{0,2}):([1-9][0-9]{0,2})\\x5D");
        Match m = r.Match("Mond 1 [1:1:1]");
    }
    catch (ArgumentException ex)
    {
        Console.WriteLine(ex);
    }

これは次と同等です

        Regex r = new Regex("Mond ([1-9]) \\[([1-9]):([1-9][0-9]{0,2}):([1-9][0-9]{0,2})\\]");
于 2009-12-10T09:28:41.190 に答える
0

\x5Bです。[_ \x5D_ ]これらの文字は RegEx で既に意味を持っていることを知っているはずなので、その前に \ を付けてエスケープする必要があります。を取得するために \ を使用する必要がないように、逐語的な文字列を使用します。

new Regex(@"Mond ([1-9]) \[([1-9]):([1-9][0-9]{0,2}):([1-9][0-9]{0,2})\]")
于 2009-12-10T09:31:48.730 に答える