【发布时间】:2010-03-05 14:11:58
【问题描述】:
我正在用 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>
当然要替换 [...]。
我的问题是我应该如何使用 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);
}
【问题讨论】:
-
我承认...我什至从未听说过 ANTLR...更不用说知道哪个更好用了。 Googlefoo 时间。
-
ANTLR 是一个解析器/词法分析器/语法工具包。它用于生成可以分析其他文本源并提取或翻译数据的源文件。它通常用于开发编译器等。
标签: c# .net regex performance antlr