我需要检查一个字符串是否包含数字以外的任何内容。但是我遇到了一个问题。
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/