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)
正确的工具是RegEx还是ANTLR或什至完全是其他工具,在很大程度上取决于您的要求。“使用哪种工具”问题的最佳答案不应主要基于性能,而应基于适合该工作的工具。
RegEx是文本搜索工具。如果您需要做的就是从琴弦中拉出琴弦,那么通常这就是选择的锤子。您可能需要一个工具来帮助您构建RegEx。我会推荐Expresso,但是那里有很多选择。
ANTLR是编译器生成器。如果您需要错误消息并解析操作或编译器随附的任何复杂内容,那么这是一个不错的选择。
看起来您正在做的是XML搜索/替换,您是否考虑过XPath?那是我的建议。
为工作选择合适的工具绝对重要,应该在开始开发之前进行研究和思考。在任何情况下,做出任何决定之前都必须充分了解程序要求,这一点很重要。您有该项目的规范吗?如果不是这样,花时间提出一个建议将使您节省很多时间,因为糟糕的工具选择可能会浪费您的时间。
希望有帮助!