Command line 为什么;d:\0.0“;不';“的t子串”;D:\0.0“;在使用“时”;findstr“;Windows命令提示符命令

Command line 为什么;d:\0.0“;不';“的t子串”;D:\0.0“;在使用“时”;findstr“;Windows命令提示符命令,command-line,cmd,findstr,Command Line,Cmd,Findstr,我正在使用带有不区分大小写的选项(/I标志)的“findstr”命令, 我无法解释下面的结果。 echo "D:\0.0" | findstr /I "d:\0" 输出:“D:\0.0” 输出: 为什么“d:\0.0”不包含“d:\0.0”的子字符串?因为您正在搜索的是regexp而不是子字符串: >echo "D:\0.0" | findstr /I "D:\0.0" 也不给什么。您想添加文字标志/l >echo "D:\0.0" | findstr /I /l "d:\0.

我正在使用带有不区分大小写的选项(/I标志)的“findstr”命令,
我无法解释下面的结果。

echo "D:\0.0" | findstr /I "d:\0"
输出:“D:\0.0”

输出:



为什么“d:\0.0”不包含“d:\0.0”的子字符串?

因为您正在搜索的是regexp而不是子字符串:

>echo "D:\0.0" | findstr /I "D:\0.0"
也不给什么。您想添加文字标志
/l

>echo "D:\0.0" | findstr /I /l "d:\0.0"
给出:

"D:\0.0"
如果要使用regexp,则需要转义圆点

>echo "D:\0.0" | findstr /I "d:\0\.0"

我想知道为什么你需要避开圆点而不是反斜杠??(也就是说,为什么上一个例子有效……但是转义反斜杠也有效,我理解:
echo“D:\0.0”| findstr/I“D:\\0.0”
…我不明白转义点如何帮助^^它应该匹配“任何”字符,包括一个点。请解释一下![我知道转义点会强制它匹配“仅”一个点。但为什么它有助于绕过对“\0”的解释,我不明白…)windows对\的解释只将其视为转义字符,如果它后面跟一个元字符,如
$
,那么
\0
匹配
\0
而不是空字符。@OliverMatthews:如果是这样(
\0
匹配
\0
),既然
匹配任何东西(即使是一个普通点),那么为什么
回声“D:\0.0”| findstr/I“D:\0.0”
不匹配呢?我在这里有点困惑(我每天都使用regexp^^)。对我来说,regexp实现看起来有缺陷(关于
\0
:“通常”(但有许多regexp变体),
\x
匹配
x
,而不仅仅是当
x
是一个特殊的元字符时……要匹配
\x
您通常会编写
\\x
,或者
\\\x
如果x是一个特殊的元字符)
>echo "D:\0.0" | findstr /I "d:\0\.0"