![]() |
Регулярные выражения
Здравствуйте, нужно помощь с обработкой исключений.Задача такая: нужно чтобы пропускало строки такого вида: целое или десятичное число(может быть, как положительным, так и отрицательным), на всё остальное должно ругаться.
Т.е, строку такого вида должно пропускать: "45.4545" или "-45.3434" или просто "45", а вот например так: ".45" или "44-455" - уже нет. Вот что я написал: Код:
for /f "delims=" %%A in ('echo.%number%^| findstr "[^0-9][.-]"') do set "nv=%%~A" Помогите довести до ума, спасибо. |
Также забыл упомянуть про вариант с нулями.просто 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)) Но не уверен, что это хороший код.Лучше бы как-то в регулярку это занести. |
Kickpopal, sed.exe, WSH, PowerShell или mshta.exe. Для findstr.exe задача, боюсь, будет не по плечу.
|
Kickpopal, а Вам зачем? В принципе, и .45, и 000051 — вполне допустимые числа.
|
Цитата:
|
Цитата:
Самое простое — использовать внешний WSH файл-фильтр, наподобие: Скрытый текст
Код:
Option Explicit Пример кода пакетного файла для фильтрации: Скрытый текст
Код:
@echo off Результат
![]() P.S. Можно, конечно, посидеть и слепить в одну строку на JScript для mshta.exe, чтобы без лишнего файла, но что-то не манится. |
Цитата:
Спасибо большое, я понял. |
Цитата:
|
Цитата:
|
Как скажете. Текущая реализация Вас устроит?
|
Цитата:
|
Время: 10:56. |
Время: 10:56.
© OSzone.net 2001-