查看创建Regex对象的模式是什么?

mto*_*one 10 .net c# regex

我有一个使用new Regex(string pattern)构造函数创建的Regex对象,之后是否有办法查看正则表达式对象的创建模式?

我似乎无法访问正则表达式或RegexOptions对象中的"模式"字符串成员.

上下文:我要问的原因是我在初始化时(模式存储在配置文件中)早期创建了一些正则表达式对象,然后将它们传递给另一个经常使用的类.但是,我还需要在运行时将模式字符串与存储在SQL数据库中的字符串进行比较.

除了正则表达式对象之外,我宁愿不必传递带有模式的字符串.我也觉得在启动时创建一次对象并不是一个坏主意,因为正则表达式将被重复使用数百次?

随意提供替代建议.

mto*_*one 32

因此,在调试器中将光标悬停在正则表达式对象上显示模式,因此必须将其关闭.原来Regex.ToString()返回模式.

ToString:返回传递给Regex构造函数的正则表达式模式.


Fab*_*amp 5

看起来你不能这样做,因为该Regex.Pattern字段标记为内部.

你说的是创建一次对象并多次重复使用是个好主意,但是将字符串作为另一个参数传递可能是你唯一的选择.

如果你真的想避免这样做,你可以创建一个继承自Regex的新类,然后在构造函数中设置Pattern属性,如下所示:

public class MyRegex : Regex
{
    public String Pattern {protected set; get;}
    public MyRegex(String Pattern) : Regex(Pattern)
    {
            this.Pattern = Pattern;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 由于@mtone 提供的答案,这似乎是不必要的。 (2认同)