.NET语句的表达式

时间:2011-05-13 05:59:16

标签: c# .net regex editor

我想为我的个人用法实现在线编辑器,因此我必须检查我在在线文本编辑器中编写的语句是否在是否正确

我想检查带有正则表达式的语句形式,我找到了 IF语句 here的良好表达式,它是

if\s*\(((?:(?:(?:"(?:(?:\\")|[^"])*")|(?:'(?:(?:\\')|[^'])*'))|[^\(\)]|\((?1)\))*+)\)\s*{((?:(?:(?:"(?:(?:\\")|[^"])*")|(?:'(?:(?:\\')|[^'])*'))|[^{}]|{(?2)})*+)}\s*(?:(?:else\s*{((?:(?:(?:"(?:(?:\\")|[^"])*")|(?:'(?:(?:\\')|[^'])*'))|[^{}]|{(?3)})*+)}\s*)|(?:else\s*if\s*\(((?:(?:(?:"(?:(?:\\")|[^"])*")|(?:'(?:(?:\\')|[^'])*'))|[^\(\)]|\((?4)\))*+)\)\s*{((?:(?:(?:"(?:(?:\\")|[^"])*")|(?:'(?:(?:\\')|[^'])*'))|[^{}]|{(?5)})*+)}\s*))*;

现在我正在寻找其余的表达方式,例如:

  • ,而
  • 变量定义(如:int xxx string xxx)
  • 切换案例
  • new(object:class,enum)
  • 的foreach

don't say that it's impossible,我可以通过regular expression处理我的问题,IF expression我上面提到的工作得很好我需要这样的事情< / p>

提前谢谢

3 个答案:

答案 0 :(得分:5)

即使这不是您问题的直接答案 - 我坚持您使用ANTLR代替

答案 1 :(得分:1)

在这种情况下使用正则表达式不是一个好主意,你应该使用类似的东西 语法分析器

答案 2 :(得分:0)

我使用正则表达式进行解析的经验是,只有在以下情况下它们才是实用的:

  • 您愿意自己编写和维护
  • 你可以接受他们并非严格正确

由于您正在寻求帮助,您可能不符合第一个标准,所以我不能为您推荐它们。

P.S。是的,我有时会在快速和肮脏的解析情况下自己使用它们。它们非常宝贵。