我有一个像
这样的字符串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 :(得分: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 :(得分:1)
您的RegExp仅匹配标记内的字符串。如果您想要捕获没有任何标记的字符串,则必须添加正则表达式的替代方法。这可以通过添加([^<>]+)
来完成,以便您的表达式看起来像([^<>]+)|{your existing expression}
。
在像Regex Pal这样的网站上,您可以在创建正则表达式时找到帮助。