regex - Windows CMD FINDSTR 错误的正则表达式匹配

标签 regex windows batch-file cmd

我需要检查一个字符串是否包含数字以外的任何内容。但是我遇到了一个问题。

echo bdfbdfd | findstr /R [^0123456789]

什么都不返回,但它应该返回 bdfbdfd。 但是

回显 123 | findstr/R [^0123456789]

返回“123”。为什么?反之亦然。

最佳答案

经过大量测试后,我们开始:

echo 123 | findstr /R "[^0123456789]"
        ^ this space is what is matched, remove it and it won't match anything

另一种方法是(如 Christian.K 所述)转义 ^ 从而编写

echo 123| findstr /R [^^0123456789]

(注意 ^^)

对于 bdfbdfd 部分,将第二个正则表达式放在 "" 之间并删除空格使其适用于指定的字符串。

编辑:

请注意,您匹配的是单个字符。在比赛中

echo bdfbdfd | findstr /R [^0123456789]

没有任何匹配项,因为您的字符串不包含任何数字(不包括需要转义的 ^)。在

echo 123 | findstr /R [^0123456789]

您匹配的是第一个数字。使用您的正则表达式,您将匹配包含单个匹配项的任何字符串,因此还尝试将 123(space) 与正则表达式 [^^0123456789] 匹配将输出整个字符串作为匹配项,因为字符串末尾的非数字字符。

关于regex - Windows CMD FINDSTR 错误的正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12669517/

相关文章:

windows - 使用 DEF 文件而不是 LIB 文件链接到 DLL?

windows - Git命令行和批处理文件有不同的输出

R正则表达式匹配/省略多次重复

javascript - 获取 regex .replace() 出现的次数

c++ - 如何仅根据屏幕大小创建一个窗口,不包括使用 C++/Windows 的窗口边框?

java - 为什么从我的 Java 应用程序运行此批处理文件失败?

MATLAB 系统命令 "Press Enter to Exit"

java - 使用正则表达式将一些数字分别分组

python - .* 与 ^ 的非贪婪匹配

python - 完全混淆了 GTK、GTK+、GTK+3、PyGobject 等