|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Регулярные выражения |
|
|
CMD/BAT - Регулярные выражения
|
Новый участник Сообщения: 6 |
Здравствуйте, нужно помощь с обработкой исключений.Задача такая: нужно чтобы пропускало строки такого вида: целое или десятичное число(может быть, как положительным, так и отрицательным), на всё остальное должно ругаться.
Т.е, строку такого вида должно пропускать: "45.4545" или "-45.3434" или просто "45", а вот например так: ".45" или "44-455" - уже нет. Вот что я написал: for /f "delims=" %%A in ('echo.%number%^| findstr "[^0-9][.-]"') do set "nv=%%~A" if not "%number%"=="%nv%" (goto :prog1) else (echo nekorrectnie dannie&goto vibor) Помогите довести до ума, спасибо. |
|
Отправлено: 18:46, 16-04-2017 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Также забыл упомянуть про вариант с нулями.просто 0 - должно пропускать, а вот всякие 000051 либо должно преобразовать к виду 51 либо вообще не пропускать.Я выбрал второе(хотя 1, наверное, более рациональный вариант) и сделал как-то так:
if "%number:~0,1%"=="0" (@if "%number:~1,1%"=="0" (echo "vvedite 4islo ne na4inauheecy c 0"&goto vibor) else (goto :npr1)) Но не уверен, что это хороший код.Лучше бы как-то в регулярку это занести. |
Отправлено: 19:01, 16-04-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Kickpopal, sed.exe, WSH, PowerShell или mshta.exe. Для findstr.exe задача, боюсь, будет не по плечу.
|
Отправлено: 19:13, 16-04-2017 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Kickpopal, а Вам зачем? В принципе, и .45, и 000051 — вполне допустимые числа.
|
Отправлено: 19:31, 16-04-2017 | #4 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
||
Отправлено: 19:37, 16-04-2017 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Kickpopal:
Самое простое — использовать внешний WSH файл-фильтр, наподобие: Скрытый текст
Option Explicit Dim strValue With WScript.CreateObject("VBScript.RegExp") .Pattern = "^[-+]?[0-9]*\.?[0-9]+$" For Each strValue In Split(WScript.StdIn.ReadAll(), vbCrLf) strValue = Trim(strValue) If .Test(strValue) Then WScript.StdOut.WriteLine CStr(CDbl(strValue)) End If Next End With WScript.Quit 0 Пример кода пакетного файла для фильтрации: Скрытый текст
Результат
![]() P.S. Можно, конечно, посидеть и слепить в одну строку на JScript для mshta.exe, чтобы без лишнего файла, но что-то не манится. |
|
Отправлено: 20:33, 16-04-2017 | #6 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Спасибо большое, я понял. |
|
Отправлено: 20:51, 16-04-2017 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Kickpopal:
|
|
Отправлено: 20:54, 16-04-2017 | #8 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Цитата Iska:
![]() |
|
Отправлено: 20:56, 16-04-2017 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Как скажете. Текущая реализация Вас устроит?
|
Отправлено: 21:07, 16-04-2017 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
регулярные выражения | Ginger | Вебмастеру | 60 | 21-03-2012 01:11 | |
Прочее - grep регулярные выражения | dogidogi | Общий по Linux | 8 | 28-05-2009 22:54 | |
Разное - PHP - регулярные выражения: HELP | GoldenOrb | Программирование и базы данных | 10 | 08-09-2008 16:47 | |
PHP - регулярные выражения: HELP | GoldenOrb | Вебмастеру | 13 | 18-07-2008 16:05 | |
Регулярные выражения | est | Хочу все знать | 6 | 02-10-2002 14:17 |
|