拆分路径(String)3件

时间:2015-07-31 14:24:29

标签: .net regex vb.net

我得到一个表示路径的String。对于测试目的,让我说我得到:

abc/def/ghi/jkl/....

我想按照以下方式吐出该字符串(首先是2个分开,然后是其余部分):

Items(0) = "abc"
Items(1) = "def"
Items(2) = "ghi/jkl/..."

我选择使用正则表达式如下:

    Dim someString = "abc/def/ghi/jkl/...."
    Dim Items() As String = Regex.Split(someString, "([_0-9a-zA-Z-]+)/([0-9a-zA-Z]+)/(.*)")

但我得到以下输出:

Items(0) = ""
Items(1) = "abc"
Items(2) = "def"
Items(3) = "ghi/jkl/..."
Items(4) = ""

有人可以解释在开头和结尾导致这些空字符串的原因吗?

我感谢你的时间,祝你周末愉快

2 个答案:

答案 0 :(得分:2)

(\w+?)\/(\w+?)\/(.*)

这应该适合您的目的。只需与此正则表达式匹配,然后拆分捕获组1,2和3.

Regex101

答案 1 :(得分:2)

String.SplitSkip方法结合使用可以成为解决此问题的可读且紧凑的替代方法:

    Dim text = "abc/def/ghi/jkl/...."

    Dim parts As String() = text.Split("/"c)

    If parts.Count >= 2 Then
        Dim items As String() = {parts.First, parts.Skip(1).First, String.Join("/", parts.Skip(2))}
    End If