网址特定部分的正则表达式

时间:2018-10-20 23:34:13

标签: regex

我正在学习编写正则表达式,并试图获取url的特定部分。例如,

            bool randomName = Config.RandomName;
        Console.WriteLine("Bool called");
        if (randomName)
        {
            Console.WriteLine("If statement called!");
            for (; ; )
            {
                try
                {
                    string[] array = File.ReadAllLines(Config.Location);
                    Random random = new Random();
                    int num = random.Next(0, array.Length - 1); //error occurs here
                    string FinalName = array[num];
                    int num2 = new Random().Next(1, File.ReadAllLines("Proxies.txt").Count<string>());
                    string proxy = File.ReadAllLines("Proxies.txt")[num2];
                    Console.WriteLine("Attempting proxy creation!");
                    Console.WriteLine("CONNECTING TO " + proxy + " ...");

其中“ customerName”是变量,而“ domain和” profile”是常量。

在给出此字符串的情况下,如何获取profileName?我想出了

https://domain/#/customerName/profile/profileName/jobs/jobName

但是真的不知道如何截断“ profileName”之后的其余字符串

2 个答案:

答案 0 :(得分:0)

customerName是一个变量,但是假设它不包含任何斜杠,则可以在{{1之后将其与[^\/]+进行匹配(这意味着“除了斜杠之外,请重复其他任何字符”)。 }}。相同的模式适用于/#/。因此,您可以使用:

profileName

https://regex101.com/r/aToq8N/3

https:\/\/domain\/#\/[^\/]+\/profile\/([^\/]+) 将在第一个捕获的组中。

请注意,由于URL不包含profileName,而仅包含/#/#/,因此请在正则表达式中使用/#/而不是\/#\/

答案 1 :(得分:0)

即使您的域是固定的,也可以在域部分之前使用此表达式

 [^\/]+

这样,除了字母字符外,它还可以包含点。