我编译了代码:
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 ...好吗?为什么我要重复这个?
答案 0 :(得分:8)
^
用作Windows命令行环境中的转义字符。它告诉命令解释器将下一个视为文字字符(因为某些字符如<
,>
和|
具有特殊含义。)
^a
在解析时评估为a
。
^^
在解析时评估为^
。
答案 1 :(得分:7)
这与正则表达式本身无关。
如果您将args[0]
打印到控制台,则会看到它不包含^
。这是因为如果未引用表达式,Windows会将其解析为转义字符。
如果你这样称呼它:
TestRegExp.exe "^a\d{5}$" aa12345
你会得到预期的结果。