3

我编译了代码:

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... 好吗?为什么我必须重复这个?

4

2 回答 2

8

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

^aa解析时评估为。

^^^解析时评估为。

于 2013-06-09T01:32:29.237 回答
7

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

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

如果你这样称呼它:

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

你会得到预期的结果。

于 2013-06-09T01:28:51.090 回答