2012-11-08 22 views
-1

我有一個變量,它具有網頁的所有數據源。這是一個很大的字符串,字符串,特殊字符等如何從大量醜陋的字符串中提取特定字符串的一部分?

我想通過這個變量並提取票號。在ticket /之後和.json之前。在以下情況下,我的名單將只有1,這是15

https://company.zendesk.com/api/v2/tickets/15.json 

此網頁都會有這個鏈接的倍數有很多的文字之間的值。在以下情況下,我的名單將有2項,值19和20

https://company.zendesk.com/api/v2/tickets/19.json blahblahblajlkdfjfaiofjd3289239lkdj 
2398283j;lkjfe89j2pefj2efljefkj 
https://company.zendesk.com/api/v2/tickets/20.json blah blhahblbahlhkaldk 

我怎麼會去在這個巨大的文件,從這些鏈接僅僅抽取的票號,並​​把它們放入一個列表?

我會用Regex嗎?我不確定我會如何處理這件事。

順便說一下,這個頁面沒有格式。這不像它是一個XML文檔或任何東西。

謝謝!

+0

我會使用正則表達式,並儘可能具體以避免誤報。如果你實際上只是獲取一個網頁而不是一堆文本,你可能需要解析它,只查看'a'元素的'href'。 –

回答

1

像這樣的東西應該讓你開始工作

 string pattern = @"https://company.zendesk.com/api/v2/tickets/\d+.json"; 
     Regex regex = new Regex(pattern); 
     MatchCollection mc = regex.Matches("input string here"); 

     foreach(Match m in mc) 
     { 
      Console.Write(m.Value); 
     } 

@ 「https://company.zendesk.com/api/v2/tickets/ \ d +以.json」;

注意粗體部分。 @意味着它是一個文字字符串,因此您不必雙重轉義您的\\ d是任何數字的替代品。 +表示前一個字符出現一次或多次。 *將意味着它發生或更多次。

這裏是你如何可以futher自定義模式http://msdn.microsoft.com/en-us/library/az24scfc.aspx

得到公正的票號的參考,你可以把"\d+"括號
https://company.zendesk.com/api/v2/tickets/(\d+).json"

,然後你的比賽將有一個叫做財產Groups您的機票號碼將是其中的一組

  Console.Write(m.Groups[i].Value); 

此時,您可以將fil使用多種啓發式方法(包括但限於字符串長度)從組的票數中找出完整匹配組,或者可以使用另一個正則表達式。