-8

この文字列テキストの数値を取得するにはどうすればよいですか?

string stringvalue = "[3=000][98=000][299=000][120=000][012=000][92=000][93=000][04=000]";

        string pattern = "([)([0-2][0-9][0-9])(=)";
        Regex rgx = new Regex(pattern, RegexOptions.IgnoreCase);
        MatchCollection matches = rgx.Matches(stringvalue);
        if (matches.Count > 0)
        {
            Console.WriteLine("=== Sonuç ===");
            foreach (Match match in matches)
                Console.WriteLine("value={0}", match.Value.Replace("[", "").Replace("=", ""));
        }
        else
        {
            Console.WriteLine("bulunamdı");
        }

Is another vay string pattern = "([)([0-2][0-9][0-9])(=)"; これはパターンです(置き換えなし)

4

3 に答える 3

2

\[(\d+)=\d+\]

探している数字は、各マッチの最初のグループにあります。

var input = "[03=000][98=000][999=000][120=000][01=000][92=000][93=000][1004=000]";
var regex = @"\[(\d+)=\d+\]";

var matches = Regex.Matches(input, regex);

foreach (Match m in matches)
{
    Console.WriteLine(m.Groups[1].Value);
}
于 2013-03-31T21:45:10.323 に答える
1

正規表現が少し厄介だと感じることがありました。正規表現に一致させる代わりに、単純な文字列処理を使用することを検討できます。これは確かにあなたの入力の仕事をします。

string val  = "[03=000][98=000][999=000][120=000][01=000][92=000][93=000][1004=000]";

string[] numbers = val.Split(new []{ '[', ']', '=' }, StringSplitOptions.RemoveEmptyEntries)
                      .Where((v, i) => i % 2 == 0)
                      .ToArray();

Console.WriteLine(string.Join(Environment.NewLine, numbers));

プリント:

03
98
999
120
01
92
93
1004
于 2013-03-31T21:46:50.663 に答える
-2

私があなたの言うことを正しく理解していれば、あなたは底がすべて1本の弦だと言っていますか? もしそうなら、正規表現は必要ありませんが(使用できますが)、部分文字列を別々に使用したいので、部分文字列を使用します。

つまり、文字列 str03 = ThatString.Substring(1,2);

str03 は「03」に等しい

于 2013-03-31T21:43:05.143 に答える