1

我正在尝试从 HTML 注释中提取变量......关于如何做到这一点的任何想法?

评论示例...

<!-- variable1: "wer2345235" variable2: "sdfgh333" variable3: "sdfsdfdfsdf"  -->

我尝试根据空格进行拆分,但变量值中可能有空格。

谢谢你的帮助!

[编辑] HTML 标记内的变量是作为 API 调用的结果返回的 - 所以它不在我的控制范围内。[/编辑]

[编辑 2] 这可以使用正则表达式来完成吗?我一直在阅读,我可以匹配但其他的不多![/编辑]

4

3 回答 3

2

您可以使用 HTML 解析器来获取注释,即HtmlAgilityPack

你可以参考这个Grabbing meta-tags and comments using HTML Agility Pack

[编辑]假设你得到评论并且格式是已知的,你可以去掉

我这样做了,它使变量字段正确

        var str = "variable1: \"wer2345235\" variable2: \"sdfgh333\" variable3: \"sdfsdfdfsdf\"";
        var r = new Regex(@"variable[\d]+: ");
        var result = r.Split(str);
        foreach( var match in result)
        {
            Console.WriteLine(match);
        }

        Console.ReadLine();
于 2012-05-14T14:15:26.160 回答
0

简单的正则表达式对此应该没问题。

    private Dictionary<string,string> ParseCommentVariables(string contents)
    {
        Dictionary<string,string> variables = new Dictionary<string,string>();

        Regex commentParser = new Regex(@"<!--.+?-->", RegexOptions.Compiled);
        Regex variableParser = new Regex(@"\b(?<name>[^:]+):\s*""(?<value>[^""]+)""", RegexOptions.Compiled);
        var comments = commentParser.Matches(contents);
        foreach (Match comment in comments)
            foreach (Match variable in variableParser.Matches(comment.Value))
                if (!variables.ContainsKey(variable.Groups["name"].Value))
                    variables.Add(variable.Groups["name"].Value, variable.Groups["value"].Value);
        return variables;
    }

将首先从“内容”字符串中提取所有评论。然后它将提取它找到的所有变量。它将这些存储在字典中并将其返回给调用者。

IE:

string contents = "some other HTML, lalalala <!-- variable1: \"wer2345235\" variable2: \"sdfgh333\" variable3: \"sdfsdfdfsdf\"  --> foobarfoobarfoobar";
var variables = ParseCommentVariables(contents);
string variable1 = variables["variable1"];
string variable2 = variables["variable2"];
于 2012-05-14T14:54:59.227 回答
0

我猜你想通过服务器端代码访问,因为你应用了 C# 标记。是否有理由为这些变量选择评论?

您可以使用<asp:HiddenField />和使用 Value 属性。访问这些值并进行适当的解析将是微不足道的。

如果您绝对需要在评论中包含这些内容。注释是否包含在带有 ID 标签的其他块中?如果是这样,您可以获取该对象的 InnerHTML 并使用基本的字符串函数来获取和解析字段。这当然假设没有多个评论或没有明确的方式来定位这个特定的评论。

于 2012-05-11T13:43:54.357 回答