【问题标题】:Regex blows up in an editor extension正则表达式在编辑器扩展中爆炸
【发布时间】:2009-07-12 16:17:40
【问题描述】:

我正在为我的 Django 渲染引擎构建一个 Visual Studio 编辑器扩展。到目前为止,我刚刚开始使用它,它真的很简单,并且到目前为止它完成了我期望它做的事情 - 突出显示等。 或者直到我开始添加解析逻辑。部分解析依赖于正则表达式。这是我的问题: 无论我如何尝试 - 静态变量、成员变量 - 任何东西,每次我调用 new Regex 时,它都会给我“对象未设置为实例”异常。 在 MEF 中使用正则表达式 (RegEx) 有问题吗?

给你:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.ComponentModel.Composition;
    using System.Text.RegularExpressions;

    namespace NDjango.Designer.Parsing
    {
        public interface IParser
        {
             List<Token> Parse(IEnumerable<string> template);
        }

        [Export(typeof(IParser))]
        public class Parser : IParser
        {
            public List<Token> Parse(IEnumerable<string> template)
            {
                var result = new List<Token>();
                Regex tag_re = new Regex("({{.*}}", RegexOptions.Compiled);
                return result;
            }
        }
    }

正则表达式构造函数行上的断点被击中就好了。下一个 F10 给出异常

【问题讨论】:

    标签: .net regex mef


    【解决方案1】:

    不,在 MEF 中使用正则表达式没有问题。问题出在您的代码中。

    根据错误消息,当您尝试创建新的正则表达式时,您似乎遇到了空引用异常。如果没有看到代码示例,就很难知道到底出了什么问题。

    你能发布一个代码示例吗?

    【讨论】:

    • 确定这里是:命名空间 NDjango.Designer.Parsing { [Export(typeof(IParser))] public class Parser : IParser { public List Parse(IEnumerable template) { var结果 = 新列表(); Regex tag_re = new Regex("({{.*}}", RegexOptions.Compiled); return result; } } } 当我将断点放在新的 Regex 行上时,它击中它就好了,但是下一个 F10 - 繁荣! !!
    • @mfeingold - 发布此代码 sn-p 的适当方法是编辑您的问题并将其添加到那里。
    【解决方案2】:

    对不起,伙计们,我想通了,JaredPar 你是对的 - 问题是正则表达式中的不平衡括号。 “诊断”虽然至少可以说是安静的误导

    【讨论】:

      猜你喜欢
      • 2015-01-21
      • 1970-01-01
      • 2020-07-18
      • 2021-05-03
      • 2011-07-15
      • 1970-01-01
      • 1970-01-01
      • 2012-03-28
      • 2016-09-26
      相关资源
      最近更新 更多