batch-file - 使用正则表达式的 findstr 函数
问题描述
我试图从字符串中单独提取数字,并且使用下面的正则表达式看起来没有帮助。
set d=22222112k
set CR =echo %d%|FindStr /R "^[0123-9]*$"
echo %CR%
如何从变量中单独提取数字?
解决方案
您可以使用带有批处理文件的 vbscript 中的正则表达式来提取数字,如下所示:Extract_Number.bat
@echo off & color 0A
Title Extract Number from String using Regex with vbscript
Set "InputSring=22222112k"
Call :Extract_Number "%InputSring%" Number
Echo The Number extracted is %Number%
Pause & Exit
::-----------------------------------------------------------------------------------
:Extract_Number <InputString> <Variable to be Set>
(
echo WScript.StdOut.WriteLine Extract_Number(Data^)
echo Function Extract_Number(Data^)
echo Data = WScript.Arguments(0^)
echo Set re = New RegExp
echo re.Global = True
echo re.IgnoreCase = True
echo re.Pattern = "\d+"
echo For Each Match in re.Execute(Data^)
echo Number = Match.Value
echo Next
echo Extract_Number = Number
echo End Function
)>"%tmp%\%~n0.vbs"
for /f "delims=" %%A in ('cscript //nologo "%tmp%\%~n0.vbs" "%~1"') do set "%2=%%A"
If Exist "%tmp%\%~n0.vbs" Del "%tmp%\%~n0.vbs"
Exit /B
::----------------------------------------------------------------------------------
编辑:或者您也可以使用 Powershell 来完成,如下面的代码:
@echo off & color 0A
Title Extract Number from String using Regex with Powershell
Set "InputSring=22222112k"
Set psCmd="&{$re=[regex]'\d+'; $re.Match('%InputSring%').value}"
Call :RunPS %psCmd% Number
Echo The Number extracted is %Number%
pause & Exit
::--------------------------------------------------------------------
:RunPS <PassPSCMD> <RetValue>
for /F "usebackq tokens=*" %%i in (`Powershell %1`) do set "%2=%%i"
Goto:eof
:: End of :RunPS function
::--------------------------------------------------------------------
推荐阅读
- php - 如何在 Google Compute Engine 上启用 PHP Zip 模块?
- web-scraping - 似乎无法访问元标记
- php - 通过 user_id 获得 Lighthouse GraphQL 数据所有权
- java - JTextField 的内部垂直对齐是否被 Java 11 破坏了?
- mysql - 检查表中mysql数据库中值的总出现次数是否为奇数
- python - 图的固定宽度
- android - 如何在 android Kotlin 中制作像素网格?
- php - 根据特定运输类别的购物车商品数量显示或隐藏运输方式
- django - 多对多关系查询在 post_save 信号上返回空查询集,但在 django shell 中不返回
- typescript - 将对象映射到接口等类属性