我有一个html字符串,我正在解析,如下所示。我需要获得@Footer的值。
strHTML = "<html><html>\r\n\r\n<head>\r\n<meta http-equiv=Content-Type
content=\"text/html; charset=windows-1252\">\r\n
<meta name=Generator content=\"Microsoft Word 14></head></head><body>
<p>@Footer=CONFIDENTIAL<p></body></html>"
我已尝试过以下代码,我如何获得该值?
Regex m = new Regex("@Footer", RegexOptions.Compiled);
foreach (Match VariableMatch in m.Matches(strHTML.ToString()))
{
Console.WriteLine(VariableMatch);
}
答案 0 :(得分:2)
您需要在=
之后捕获值。只要该值不能包含任何<
字符,这将有效:
Regex m = new Regex("@Footer=([^<]+)", RegexOptions.Compiled);
foreach (Match VariableMatch in m.Matches(strHTML.ToString()))
{
Console.WriteLine(VariableMatch.Groups[1].Value);
}
答案 1 :(得分:2)
您可以使用正则表达式执行此操作,但这不是必需的。一个简单的方法是:
var match = strHTML.Split(new string[] { "@Footer=" }, StringSplitOptions.None).Last();
match = match.Substring(0, match.IndexOf("<"));
这假设您的html字符串只有一个@Footer
。
答案 2 :(得分:1)
你的正则表达式将匹配字符串“@Footer”。匹配的值为“@Footer”。
你的正则表达式应该是这样的:
Regex regex = new Regex("@Footer=[\w]+");
string value = match.Value.Split('=')[1];
答案 3 :(得分:1)
使用匹配的组。
Regex.Matches(strHTML, @"@Footer=(?<VAL>([^<\n\r]+))").Groups["VAL"].Value;
答案 4 :(得分:0)
如果这是你的所有字符串,我们可以使用字符串方法解决它而不涉及正则表达式的东西:
var result = strHTML.Split(new string[]{"@Footer=", "<p>"}, StringSplitOptions.RemoveEmptyEntries)[1]