C#正则表达式,斜杠之间的文本

C#正则表达式,斜杠之间的文本,c#,regex,C#,Regex,我在C#中有3种类型的字符串,我想使用正则表达式检索斜杠之间的文本 string type1 = "www.domain.com/category-name/1.html"; string type2 = "www.domain.com/category-name/sub-category-name/2.html"; string type3 = "www.domain.com/category-name/sub-category-name/sub-sub-category-name/3.h

我在C#中有3种类型的字符串,我想使用正则表达式检索斜杠之间的文本

string type1 = "www.domain.com/category-name/1.html";

string type2 = "www.domain.com/category-name/sub-category-name/2.html";

string type3 = "www.domain.com/category-name/sub-category-name/sub-sub-category-name/3.html";
Q1)我想从type1变量中检索第一个和第二个斜杠“/”之间的文本。我应该得到类别名称

Q2)我想从type2变量中检索第一个和第二个斜杠“/”之间的文本,以及第二个和第三个斜杠“/”之间的文本。我应该得到类别名称和子类别名称

Q3)我想从type3变量中检索第一和第二斜杠“/”之间的文本,第二和第三斜杠“/”之间的文本,以及第三和第四斜杠“/”之间的文本。我应该得到类别名称和子类别名称和子类别名称

任何帮助都将不胜感激


谢谢

您不需要正则表达式就可以工作,请查看方法和枚举


您可能需要查看。

假设字符串是要分析的变量:

var tokens = theString.split('/');
if(tokens.length >= 2)
{
    string category = tokens[1];

    List<string> subCategories = new List<string>();
    for(int k = 2; k < tokens.length - 1; k++)
    {
        subCategories.Add(tokens[k]);
    }
}
var-tokens=string.split('/');
如果(tokens.length>=2)
{
字符串类别=令牌[1];
列表子类别=新列表();
for(int k=2;k
如果您确实觉得有必要(错误地)在这种情况下使用正则表达式

/([\w-]+)(?=/)

我们应该做到这一点。这假设斜杠之间的项目是字母和连字符。

您也可以使用System.Uri执行以下操作:

Uri type1 = new Uri("http://www.domain.com/category-name/1.html");
var categoryNameType1 = type1.Segments[1];
Uri type2 = new Uri("http://www.domain.com/category-name/sub-category-name/2.html");
var categoryNameType2 = type2.Segments[1];
var subcategoryNameType2 = type2.Segments[2];

这可能比简单的string.Split()稍微复杂一些,但是如果您需要像查询一样从URI中获得更多信息,您可以很容易地获得它。

这里是另一种方法。它与您已有的其他答案相同,但只是想发布它,因为它略有不同:

string url = "www.domain.com/category-name/1.html"
var splitted = url.Split('/');
var values = splitted.Skip(1).Take(splitted.Length - 2).ToArray();

你为什么需要正则表达式?你就不能在
/
上拆分字符串吗?@Faizal要得到你想要的一切,只需做一个从1到长度的for循环-1noooo,不要给他一个正则表达式!凯文是对的。这个答案只不过是密码高尔夫。请不要把这个标为正确答案。
string url = "www.domain.com/category-name/1.html"
var splitted = url.Split('/');
var values = splitted.Skip(1).Take(splitted.Length - 2).ToArray();