ANTLR还是Regex?

Alo*_*kin 3 .net c# regex performance antlr

我正在ASP.NET/C#中编写CMS,我需要处理每个页面请求这样的事情:

<html>
<head>
    <title>[Title]</title>
</head>
<body>
    <form action="[Action]" method="get">
        [TextBox Name="Email", Background=Red]
        [Button Type="Submit"]
    </form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

并当然更换[...]。

我的问题是我应该如何使用ANTLR或Regex来实现它?什么会更快?请注意,如果我要使用ANTLR来实现它,我认为我需要实现XML,作为[..]的附加内容。

我将需要实现参数,等等。

编辑:请注意,我的正则表达式甚至看起来像这样:

public override string ToString()
{
    return Regex.Replace(Input, @"\[
                                    \s*(?<name>\w+)\s*
                                    (?<parameter>
                                        [\s,]*
                                            (?<paramName>\w+)
                                            \s*
                                            =
                                            \s*
                                            (
                                                (?<paramValue>\w+)
                                                |
                                                (""(?<paramValue>[^""]*)"")
                                            )
                                    )*
                               \]", (match) =>
                                  {
                                      ...
                                  }, RegexOptions.IgnorePatternWhitespace);
}        
Run Code Online (Sandbox Code Playgroud)

Tas*_*ask 6

正确的工具是RegEx还是ANTLR或什至完全是其他工具,在很大程度上取决于您的要求。“使用哪种工具”问题的最佳答案不应主要基于性能,而应基于适合该工作的工具

RegEx是文本搜索工具。如果您需要做的就是从琴弦中拉出琴弦,那么通常这就是选择的锤子。您可能需要一个工具来帮助您构建RegEx。我会推荐Expresso,但是那里有很多选择。

ANTLR是编译器生成器。如果您需要错误消息并解析操作或编译器随附的任何复杂内容,那么这是一个不错的选择。

看起来您正在做的是XML搜索/替换,您是否考虑过XPath?那是我的建议。

为工作选择合适的工具绝对重要,应该在开始开发之前进行研究和思考。在任何情况下,做出任何决定之前都必须充分了解程序要求,这一点很重要。您有该项目的规范吗?如果不是这样,花时间提出一个建议将使您节省很多时间,因为糟糕的工具选择可能会浪费您的时间。

希望有帮助!