Joe*_*oey 32 regex windows command-line findstr
我正在做一个小字符串验证findstr
和它的/r
标志,以允许正则表达式.特别是我想验证整数.
正则表达式
^[0-9][0-9]*$
Run Code Online (Sandbox Code Playgroud)
对于非负数而言工作得很好但是因为我现在支持负数而且我试过了
^([1-9][0-9]*|0|-[1-9][0-9]*)$
Run Code Online (Sandbox Code Playgroud)
对于正整数或负整数或零.
正则表达式在理论上运行良好.我在PowerShell中测试了它,它符合我的要求.然而,随着
findstr /r /c:"^([1-9][0-9]*|0|-[1-9][0-9]*)$"
Run Code Online (Sandbox Code Playgroud)
它没有.
虽然我知道findstr
没有最先进的正则表达式支持(甚至在Notepad ++之下,这可能是一项相当大的成就),但我希望这些简单的表达式可以工作.
我在这里做错了什么想法?
Ala*_*ore 48
这对我有用:
findstr /r "^[1-9][0-9]*$ ^-[1-9][0-9]*$ ^0$"
Run Code Online (Sandbox Code Playgroud)
如果不使用该/c
选项,则该<Strings>
参数将被视为以空格分隔的搜索字符串列表,这使得该空间成为|
构造的一种粗略替代.(只要你的正则表达式不包含空格,那就是.)
唉,我应该更好地阅读文档.findstr
显然不支持交替(|
).
所以我可能会回到多个调用或最终用自定义解析器替换整个事物.
这就是我现在要做的事情:
set ERROR=1
rem Test for zero
echo %1|findstr /r /c:"^0$">nul 2>&1
if not errorlevel 1 set ERROR=
rem Test for positive numbers
echo %1|findstr /r /c:"^[1-9][0-9]*$">nul 2>&1
if not errorlevel 1 set ERROR=
rem Test for negative numbers
echo %1|findstr /r /c:"^-[1-9][0-9]*$">nul 2>&1
if not errorlevel 1 set ERROR=
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
85165 次 |
最近记录: |