文档说 FindStr 处理逆类语法,例如查找任何不匹配“X”的字符:
[^X]
但是一些简单的测试表明情况并非如此——至少在我的 Windows 7 x64 设置上不是这样。Findstr 将逆类符号 '^' 视为根本不存在。所以它认为上面的正则表达式是这样的:
[X]
我想知道是否有人知道一种方法来欺骗 FindStr 来识别 '^' 反类符号?
是的,我可以使用 FindStr 之外的其他工具,但这通常是已安装在 Windows 设置中的工具。
是 中的^
转义字符cmd.exe
。您必须转义它(类似于\
在其他环境中)。尝试:
[^^X]
您是否将搜索表达式括在双引号中?IIRC an unquoted^
将简单地引用下一个字符,这听起来像您正在报告的内容。
这是一个有效的示例:
echo 123|findstr /R "[^0-9]"
没有发现任何预期。
没有引号的相同是行不通的。
运行一些测试以使 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 将搜索这两个表达式(使用或关系)。