2015-03-19 57 views
1

陣列我有一個像分割字符串從文本和HTML標記

string html = "truongpm<b><i>bold italic</i></b><b>bold</b><i>italic</i>"; 

字符串我如何獲得陣列狀

a[0] = "truongpm", a[1]= "<b><i>bold</i></b>", a[2]="<b>bold</b>", a[3]="<i>italic</i>" 

從這個字符串。現在我用這個代碼

string tagRegex = @"<\s*([^ >]+)[^>]*>.*?<\s*/\s*\1\s*>"; 
MatchCollection matchesImgSrc = Regex.Matches(html, tagRegex, RegexOptions.IgnoreCase | RegexOptions.Singleline); 
     foreach (Match m in matchesImgSrc) 

,但它只是讓

a[0]= "<b><i>bold</i></b>", a[1]="<b>bold</b>", a[2]="<i>italic</i>" 

沒有 「truongpm」 請幫幫我! 感謝

+0

在當前模式之前放置'[^ <>] + |'。 – Jerry 2015-03-19 07:48:03

回答

2

這裏是你可以使用代碼:

var l = new List<string>(); 
var html = "truongpm<b><i>bold italic</i></b><b>bold</b><i>italic</i>"; 
var tagRegex = @"[^<>]+|<\s*([^ >]+)[^>]*>.*?<\s*/\s*\1\s*>"; 
var matchesImgSrc = Regex.Matches(html, tagRegex, RegexOptions.IgnoreCase | RegexOptions.Singleline); 
foreach (Match m in matchesImgSrc) 
    l.Add(m.Value); 
+1

它像一個魅力!謝謝。 – JCO9 2017-01-17 16:38:35

+0

很高興爲你效勞,請考慮接受答案。 – 2017-01-17 17:13:20

1

你的正則表達式只有標籤內匹配的字符串。如果您想要捕獲沒有任何標籤的字符串,則必須爲正則表達式添加一個替代方法。這可以通過添加([^<>]+)來完成,以便您的表達看起來像([^<>]+)|{your existing expression}。 像Regex Pal這樣的網站可以幫助您創建正則表達式。