日期:2014-05-17  浏览次数:20470 次

请教,如何用正则表达式分割如下字符串?
string pattern=@"^@.*\s";
MatchCollection mymatches = Regex.Matches(SS,pattern);
string[] arr = mymatches[0].ToString().Split(new char[]{'@'});
如果SS是“@你@我@他@所有人 我对大家说一句话”,这样能实现分割得到你、我、他、所有人四个用户名。
但是如果我想实现分割“@你 对你说@我 对自己说@他 对他说@所有人 这是对所有人说”得到你、我、他、所有人,这该怎么实现呢?正则表达式我那样写好像实现不了

------解决方案--------------------
C# code

            string source = "@你 对你说@我 对自己说@他 对他说@所有人 这是对所有人说";
            Regex reg = new Regex(@"(?is)(?<=@).*? ");
            MatchCollection mc = reg.Matches(source);
            foreach (Match m in mc)
            {
                MessageBox.Show(m.Value);
            }

------解决方案--------------------
Regex reg = new Regex(@"@[^\s]+");
------解决方案--------------------
探讨
引用:
试试,

C# code


string str = @"@你 对你说@我 对自己说@他 对他说@所有人 这是对所有人说";
Regex reg = new Regex(@"(?<=@)[^\s]+");
foreach (Match m in reg.Matches(str))
……

真厉害,这个可以啊,不过我想得到@你@我@他@所有人,就是在前……