如何使用html表标签解析字符串?
问题描述:
我有一个字符串:如何使用html表标签解析字符串?
string s= "<tr><td>abc</td><td>1</td><td>def</td></tr><tr><td>aaa</td><td>2</td><td>bbb</td></tr>";
它看起来 - 格式如下:
<tr>
<td>abc</td>
<td>1</td>
<td>def</td>
</tr>
<tr>
<td>aaa</td>
<td>2</td>
<td>bbb</td>
</tr>
现在我想要得到的值 “1” 和 “2”,我该怎么办呢? 我已经尝试将其转换为XML,但没有成功。
答
您可以使用HTML Agility Pack.实现这一
HtmlDocument doc = new HtmlDocument();
doc.Parse(str);
IEnumerable<string> cells = doc.DocumentNode.Descendants("td").Select(td => td.InnerText);
答
string s = "<tr><td>abc</td><td>1</td><td>def</td></tr><tr><td>aaa</td><td>2</td><td>bbb</td></tr>";
s = s.Replace("<tr>","").Replace("</tr>","").Replace("</td>","");
string[] val = s.Split(new string[] { "<td>" }, StringSplitOptions.None);
string one = val[2];
string two = val[5];
我希望它会为你工作。
答
Regex regex = new Regex("<td>(.*?)<\\/td>");
var maches = regex.Matches("<tr><td>abc</td><td>1</td><td>def</td></tr><tr><td>aaa</td><td>2</td><td>bbb</td></tr>");
var values = maches.Cast<Match>().Select(m => m.Groups[1].Value).ToList();
答
string s = "<tr><td>abc</td><td>1</td><td>def</td></tr><tr><td>aaa</td><td>2</td><td>bbb</td></tr>";
var regexPunctuation = s;
while (regexPunctuation != "")
{
regexPunctuation = System.Text.RegularExpressions.Regex.Match(s, @"\d+").Value;
s = s.Substring(s.IndexOf(regexPunctuation)+regexPunctuation.Length);
MessageBox.Show(regexPunctuation);
}
正则表达式的每个号码相匹配的字符串和while循环经过所有的人。做什么你想要的MessageBox.Show intead,你很好去。
答
好日子维奇
这可能不是你要找的解决方案,但它一定会提供许多帮助之一。
我会用这个正则表达式来提取所有标签
(<\/[a-z]*>)+(<[a-z]*>)+|(<[a-z]*>)+(<\/[a-z]*>)+|(<[a-z]*>)+|(<\/[a-z]*>)+
例子:
string input = "<tr><td>abc</td><td>1</td><td>def</td></tr><tr><td>aaa</td><td>2</td><td>bbb</td></tr>";
string replacement = "#";
string pattern = "(<\/[a-z]*>)+(<[a-z]*>)+|(<[a-z]*>)+(<\/[a-z]*>)+|(<[a-z]*>)+|(<\/[a-z]*>)+";
RegexOptions options = RegexOptions.IgnoreCase | RegexOptions.Compiled |
RegexOptions.Multiline;
Regex rgx = new Regex(pattern, options);
string result = rgx.Replace(input, replacement);
// result == "#abc#1#def#aaa#2#bbb#"
这正则表达式将抓住的标签,团体或个人,然后你可以用更换分隔符行管道“|”或“#”并在其上分开。 我希望这可以帮助。
亲切的问候
Ps。正则表达式解释: 管道用作或运营商
(<\/[a-z]*>)+(<[a-z]*>)+ // Closing tag(s) that are followed by opening tag(s)
(<[a-z]*>)+(<\/[a-z]*>)+ // Opening tags followed by closing tags
(<[a-z]*>)+ // one or more opening tags
(<\/[a-z]*>)+ // one or more closing tags
+0
也只是提到这个正则表达式可以处理任何和所有的html/xml元素,并不完全知道自我关闭标记的结果。 –
有效的XML文档必须具有单个根节点。转换前将字符串包装在一个字符串中。 –
因为在该串具有一定的符号
你能给我所有的字符串吗? –