0

デリミタを正規表現で保持する方法は?

私は次のことを試しました

string str = "user1;user2;user3;user4";

            Regex regex = new Regex(@"\w;");    

            string[] splites = regex.Split(str);
            foreach (string match in splites)
            {
                Console.WriteLine("'{0}'", match);
                Console.WriteLine(Environment.NewLine);
            }

出力:

user1
user2
user3
user4

私は次のようになりたいが、そうではない:

出力:

user1;
user2;
user3;
user4
4

2 に答える 2

1

Regex.Matchesより適切なようです:

string str = "user1;user2;user3;user4";
Regex re = new Regex(@"\w+;?");
foreach (var match in re.Matches(str)) {
    Console.WriteLine(match);
}

デモラン


または、後読みアサーションを使用できます。

string str = "user1;user2;user3;user4";
Regex re = new Regex(@"(?<=;)");
foreach (var match in re.Split(str)) {
    Console.WriteLine(match);
}

デモラン

于 2013-10-20T10:59:21.883 に答える
0

このようなことを試すことができます

        string str = "user1;user2;user3;user4";
        MatchCollection matchs= Regex.Matches(str, @"[\w]+;?");
        foreach (Match m in matchs)
        {
            Console.WriteLine(m.Value);
        }
于 2013-10-21T09:32:02.263 に答える