使用模式与已编译的正则表达式C#初始化正则表达式

时间:2016-12-27 18:04:36

标签: c# regex

如果要求是您需要确保在最初实例化Regex对象时仅计算一次表达式语法,那么正确的答案是什么。

var regExpPattern = @"somepatternhere";
  1. Regex.Match(input, regExpPattern);
  2. var evaluate = new Regex(regExpPattern);
  3. var evaluate = new Regex(regExpPattern, RegexOptions.Compiled);
  4. 答案2或3是什么?

1 个答案:

答案 0 :(得分:1)

第一个创建new Regexcalls matches() on it

static MatchCollection Matches(String input, String pattern, RegexOptions options, TimeSpan matchTimeout) {
            return new Regex(pattern, options, matchTimeout, true).Matches(input);
        }

所以第一和第二几乎是相同的事情。

正如已经说过的那样,最后一个将是创造,但使用起来更快。

简而言之,如果您打算只使用一次Regex,请使用1)或2)。如果您计划运行循环或多次使用正则表达式,请选择第三种解决方案。