下面是示例字符串'/aaa/bbb/ccc/ddd‘或'/aaa/zzz’
我想要一个正则表达式来获取每个区块,比如
aaa
bbb
ccc
ddd
因此,我写道
Regex r = new Regex(@"(/[^/]*)*");
但它只能得到最后一次匹配,
/ddd
我怎么才能得到大家,非常感谢。
更新我的问题:我知道“分裂”,只是为了好玩。情况是我有一个字符串:
string s = @"ftp://127.0.0.1/TE ST.中文 空格CC/T # ES T.OK/# ##中文 测试##^#@!aaa.txt";
我想对/.../之间的每个块进行编码(使用Uri.EscapeDataString( each ))我更喜欢使用Regex.Replace,可以吗?
发布于 2011-03-14 18:48:37
您的初始问题,使用Regex
Regex r = new Regex(@"(/[^/]*)");
var matches = r.Matches("/aaa/bbb/ccc/ddd");
foreach (var match in matches)
{
// ...
}
只需删除模式的尾随*
。
你的第二个问题:
Regex r = new Regex(@"/([^/]*)");
var result = r.Replace("1.1.1.1/aaa/bbb/ccc/test.ext", match => {
return string.Format("/{0}", Uri.EscapeDataString(match.Groups[1].Value));
});
发布于 2011-03-14 18:37:10
对于如此简单的事情,您不需要(也不应该使用)正则表达式。
string s = "/aaa/bbb/ccc/ddd";
var blocks = s.Split('/');
foreach(var block in blocks) {
Console.WriteLine(block);
}
输出:
aaa
bbb
ccc
ddd
编辑:哦,我知道你想做什么了。所以现在我们不想删除空条目,我们想说
string encoded = String.Join("/", blocks.Select(b => Uri.EscapeDataString(b)));
发布于 2011-03-14 18:37:20
在这种情况下,为什么不在/上拆分呢?
String[] split = "/aaa/bbb/ccc/ddd".split("/");
(请注意,我写C#已经有一段时间了,所以上面可能包含一两个错误,但是想法应该是清晰的。)
https://stackoverflow.com/questions/5302827
复制