如何解析像'/ aaa/bbb/ccc/ddd'这样的字符串?

non*_*ast 2 c# regex

这是像'/ aaa/bbb/ccc/ddd'或'/ aaa/zzz'这样的示例字符串
我希望得到一个正则表达式来获取每个块,如
aaa
bbb
ccc
ddd

因此,我写道

Regex r = new Regex(@"(/[^/]*)*");
Run Code Online (Sandbox Code Playgroud)

但它只能得到最后一场比赛,
/ ddd
我怎么能得到每个人,非常感谢.

更新我的问题:我知道'分裂',只是为了好玩.情况是我有一个字符串:

string s = @"ftp://127.0.0.1/TE ST.?? ??CC/T # ES T.OK/# ##?? ??##^#@!aaa.txt";
Run Code Online (Sandbox Code Playgroud)

我想在/.../之间编码每个块(使用Uri.EscapeDataString(每个))我更喜欢使用Regex.Replace,这可能吗?

jas*_*son 9

你不需要(也不应该使用)正则表达式来做这么简单的事情.

string s = "/aaa/bbb/ccc/ddd";
var blocks = s.Split('/');
foreach(var block in blocks) {
    Console.WriteLine(block);
}
Run Code Online (Sandbox Code Playgroud)

输出:

aaa
bbb
ccc
ddd
Run Code Online (Sandbox Code Playgroud)

编辑:哦,我明白你要做什么.所以现在我们不想删除空条目,我们想说

string encoded = String.Join("/", blocks.Select(b => Uri.EscapeDataString(b)));
Run Code Online (Sandbox Code Playgroud)


Pim*_*ger 5

在这种情况下,为什么不拆分/?

String[] split = "/aaa/bbb/ccc/ddd".split("/");
Run Code Online (Sandbox Code Playgroud)

(注意,自从我编写C#以来已经有一段时间了,所以上面可能包含一两个错误,但是这个想法应该是明确的.)