2011-07-07 91 views
2

所以我有一組可以是這樣的數據(樣品行由行):正則表達式來提取數據

verkoop 
verkoop [Hot News] 
verkoop [Hot News] [Smurf] 
verkoop test 
verkoop test [Hot News] 
verkoop test [Hot News] [Smurf] 

什麼,我要的是所有的文字(在本例中它可以是verkoopverkoop test)和所有標籤(例如:[Hot News][Hot News][Smurf])被分離(在組中優選,但最終我只需要這些在C#中的數組)。

文本可以保持1組,但每個標籤必須形成它自己的組。

我試圖弄亂一個正則表達式,但似乎無法使它使用多於一個標籤(例如[Hot News] [Smurf])。 這就是我想出的:

^([a-zA-Z0-9\s]*)\s?(((?:[\[]{1}[a-zA-Z\s]+[\]]{1}\s?)*))$ 

任何幫助,非常感謝!

+0

你是什麼意思的「在小組」,以及它將如何在陣列結構?我不是RegEx專家,但使用'IndexOf'和'Substring'分析這些信息是非常簡單的。 –

回答

2

如果標籤始終位於字符串的末尾,那麼您可以簡單地在[的第一個匹配項上進行拆分(如果存在)。

using System; 

class Program 
{ 
    static void Main() 
    { 
     string s = "verkoop test [Hot News] [Smurf]"; 
     int i = s.IndexOf('['); 
     if(i > -1) 
     { 
      Console.WriteLine(s.Substring(0, i)); 
      Console.WriteLine(s.Substring(i)); 
     } 
    } 
} 

它打印:

verkoop test 
[Hot News] [Smurf]
+0

是的,我認爲這可能是最好的方式。謝謝! – Fverswijver

+0

@Fverswijver,是的,這可能是更多的代碼行,但比單個正則表達式分割更可讀。當然,歡迎您。 –

0

你爲什麼不考慮簡單的字符串處理,你的情況,你可以使用「[」作爲分隔符和拆分字符串。