从URL获取某些文本

时间:2015-01-27 20:00:48

标签: c# regex

我一直试图对此网址做一些事情:" https://www.fiverr.com/categories/writing-translation/SEO-keyword-optimization-services"

首先我需要解析:写作翻译(根据类别不断变化)。然后选择' - '因此你最终会写:翻译。

我一直在和Regex一起尝试自己,但我很高兴,相信我,我已经尝试过了。如果有人能给我一个答案,并向我解释他们使用的正则表达式,那就太棒了。非常感谢你。

即 - 我的可怕尝试(仅仅是为了它)

   string MainCategory_link = firefoxDriver.FindElementByXPath("//a[@class='gig- sub-cat js-gtm-event-auto']").GetAttribute("href");
   var Reg = new Regex("\".*?\"");
   var matches = Reg.Matches(MainCategory_link);
   foreach (var item in matches)
   {
       MessageBox.Show(item.ToString());
   }

使用细分尝试更新代码

string MainCategory_link = firefoxDriver.FindElementByXPath("//a[@class='gig-sub-cat js-gtm-event-auto']").GetAttribute("href");
var uri = new Uri(MainCategory_link);
foreach (var segment in uri.Segments)
{
    MessageBox.Show(segment[1].ToString());
 }

1 个答案:

答案 0 :(得分:1)

Uri class允许您通过细分来访问Uri的不同部分。

var uri = new Uri("https://www.fiverr.com/categories/writing-translation/SEO-keyword-optimization-services");
foreach(var segment in uri.Segments)
{
    MessageBox.Show(segment);
}

/* Output
categories
writing-translation
SEO-keyword-optimization-services
*/

因此,要检索writing-translation,您需要:

var uri = new Uri("https://www.fiverr.com/categories/writing-translation/SEO-keyword-optimization-services");
MessageBox.Show(uri[1]);

当然,您应该在通过索引访问某些内容时执行边界检查,以确保它存在且不会获得OutOfBoundsException

永远不要使用正则表达式,除非你绝对肯定,不存在更好的选择。正则表达式应该永远是最后的手段。事实上,如果你根本不了解Regex可能会更好,因为你会在所有错误的时间继续尝试使用它。