documentation表示FindStr处理反向类语法,例如查找与“X”不匹配的任何字符:
[^X]
但是一些简单的测试显示情况并非如此 - 至少在我的Windows 7 x64设置上没有。 Findstr将逆类符号'^'视为根本不存在。因此,它将上述正则表达式视为:
[X]
我想知道是否有人知道如何通过欺骗FindStr来识别'^'逆类符号?
是的我可以使用除FindStr之外的其他工具,但这通常是Windows安装程序上已安装的工具。
答案 0 :(得分:1)
您是否将搜索表达式括在双引号中? IIRC一个不带引号的^
将简单引用下一个字符,这听起来就像你报道的那样。
答案 1 :(得分:1)
^
是cmd.exe
中的转义字符。你必须逃避它(类似于其他环境中的\
)。旅行>
[^^X]
答案 2 :(得分:1)
这是一个有效的例子:
echo 123|findstr /R "[^0-9]"
找不到任何预期的结果。
同样没有引号不起作用。
答案 3 :(得分:0)
运行一些测试使 findstr 的行为更清晰。测试并未涵盖所有可能性,只是为了开始:
echo.123|findstr.exe /x /r "[^0]"
echo.123|findstr.exe /x /r "[^0][0-9]"
echo.123|findstr.exe /b /r "[^0][0-9]*"
echo. 123|findstr.exe /b /r "[^0][0-9]*"
echo.123a|findstr.exe /b /r "[^0][0-9]*"
echo.123a|findstr.exe /r "^[^0][0-9]*"
echo.123a|findstr.exe /r "^[0][0-9]*$"
echo.123a|findstr.exe /r "[^0]$"
echo.123a|findstr.exe /r "[^a]$"
echo.123a|findstr.exe /e /r "[^a]"
echo.123a|findstr.exe /b /r "[^a]"
引号之间可以有多个正则表达式。 Findstr 将搜索这两个表达式(使用或关系)。