C#中的正则表达式IsMatch()方法

时间:2013-06-09 01:20:45

标签: c# regex

我编译了代码:

namespace TestRegExp
{
    class Program
    {
        static void Main(string[] args)
        {
            if (Regex.IsMatch(args[1], args[0]))
                Console.WriteLine("Input matches regular expression.");
            else
                Console.WriteLine("Input DOES NOT match regular expression.");
        }
    }
}

当我跑步时:

  • TestRegExp.exe ^a\d{5}$ a12345显示Input matches regular expression.
  • TestRegExp.exe ^a\d{5}$ aa12345显示Input matches regular expression.
  • TestRegExp.exe ^^a\d{5}$ a12345显示Input matches regular expression.
  • TestRegExp.exe ^^a\d{5}$ aa12345显示Input DOES NOT match regular expression.

为什么第二个选项会显示Input matches regular expression.

'^'符号表示字符串init ...好吗?为什么我要重复这个?

2 个答案:

答案 0 :(得分:8)

^用作Windows命令行环境中的转义字符。它告诉命令解释器将下一个视为文字字符(因为某些字符如<>|具有特殊含义。)

^a在解析时评估为a

^^在解析时评估为^

答案 1 :(得分:7)

这与正则表达式本身无关。

如果您将args[0]打印到控制台,则会看到它不包含^。这是因为如果未引用表达式,Windows会将其解析为转义字符。

如果你这样称呼它:

TestRegExp.exe "^a\d{5}$" aa12345

你会得到预期的结果。