我需要删除字母a到z,A到Z和特殊字符。我只需要数字和小数点。我发现很多使用字符串操作的例子,但我认为使用正则表达式更好。
例如,
numbers = 10.20af24
数字必须等于10.20
而不是10.20af24
。
谢谢。
答案 0 :(得分:0)
@ECHO OFF
SETLOCAL enabledelayedexpansion
SET "num=10.20af24"
FOR /l %%d IN (1,1,999) DO SET result=!num:~0,%%d!&ECHO(!num:~%%d,1%!|FINDSTR /r "[0-9\.]" >nul&IF ERRORLEVEL 1 GOTO done
:done
ECHO %result%
GOTO :EOF
...因为你坚持使用正则表达式
答案 1 :(得分:0)
这个名为repl.bat
的帮助程序批处理文件具有类似于SED repl /?
的正则表达式功能以获取帮助 - 从以下网址下载:https://www.dropbox.com/s/qidqwztmetbvklt/repl.bat
这个名为findrepl.bat
的帮助程序批处理文件类似于GREP - 从以下网址下载:https://www.dropbox.com/s/rfdldmcb6vwi9xc/findrepl.bat
这适用于您的样本,但在这种情况下它很简单:
@echo off
echo 10.20af24|repl "[a-zA-Z].*" ""
pause
将repl.bat
放在与批处理文件相同的文件夹中或路径上。
答案 2 :(得分:0)
再一次
@echo off
setlocal enableextensions enabledelayedexpansion
set "string=10.20af24"
set "num="
for /f %%a in ('cmd /q /u /c "echo(%string%"^|more^|findstr /r /c:"[0-9.]"') do set "num=!num!%%a"
echo %num%
答案 3 :(得分:-1)
最好使用正则表达式,尽管Batch没有任何内置功能。您可以执行以下操作 -
for %%a in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do set number=!number:%%a=!
示例 -
@echo off
setLocal enableDelayedExpansion
set number=10.20af24
for %%a in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do set number=!number:%%a=!
echo !number!
您可以在for循环中添加其他特殊字符,但请记住,您可能需要使用克拉^
来转义它们。