VBScript.RegExp поиск в строке последовательности цифр #807080


#0 by Надмозг
Хочу найти в строке последовательность цифр, длину ее не знаю Для любой цифры используется шаблон [0-9], для двух [0-9][0-9] А если я не знаю, сколько их? RegExp = Новый COMОбъект("VBScript.RegExp"); RegExp.Pattern = "[0-9]"; // Что тут написать? Копаюсь тут, пока не понял Если поставить звездочку [0-9]*, то, по-моему, это не то.
#1 by lodger
вот довольно полная шпаргалка. там есть пример интервала чисел от 1 до 50. имхо, по аналогии можно и запилить...
#2 by Филиал-msk
d+
#3 by Филиал-msk
#4 by Надмозг
так разве не будут искаться повторы предыдущих значений? Ну допустим, 11 или 1111 найдется, а 1234 нет
#5 by Надмозг
там, по-моему, слишком наворочено, плюс есть ограничение по длине. Я это видел Вроде, вот так без ограничения по длине [0-9]{1,} но это не точно) Просто мне затруднительно тестить всё в данный момент, нужен готовый вариант или несколько
#6 by kittystark
в верно сказано, т.к.: d - любая цифра,  + - один и более раз
#7 by Надмозг
это хорошо, попробую
#8 by kittystark
слеши лишние
#9 by Надмозг
по описалову так      Соответствует предыдущему символу повторенному 1 или более раз. Эквивалентно {1,}. Например, /a+/ соответствует 'a' в "candy" и всем символам 'a' в "caaaaaaandy". Я вот и не пойму, предыдущий символ это в конкретной строке, или символ шаблона.
#10 by Надмозг
окей
#11 by kittystark
если доку почитать внимательно, то [0-9] это d {1,} это +
#12 by Надмозг
#13 by Надмозг
Поднимаю тему... Ищу в строке последовательность ХХ-ХХХХ Х - цифра.  После черточки может быть от 1 до 4 цифр Написал такое d{2}-d{1,4} Но нужно чтобы последовательность ХХХ-ХХХХ уже не попадала, т.е. не обрезало, а именно ничего не находилось Добавил в начале перед выражением (D|^) Это означает не цифра или начало строки Но в таком случае если будет такой текст абвгд12-123 то попадет д12-123, а мне надо 12-123, т.е. чтобы условие пред строкой поиска проверялось, но значение не попадало Как правильно написать?
#14 by lodger
вызови регэксп второй раз...
#15 by Надмозг
Слишком топорно Искал искал, потом написал сюда, и внезапно нашел (?<!d) - поставить перед выражением, будет смотреть перед найденной строкой, если не цифра, то вернет строку, а значение перед ней не вернет В итоге так выглядит (?<!d)d{2}-d{1,4} (Для потомков: в теме две подзадачи по рег выражениям последний, последний пост не относится напрямую к первому)
#16 by RomaH
- есть ведь группы (D|^)(d{2}-d{1,4}) группа 2 дает правильный результат
#17 by Надмозг
да, через вторую группу тоже можно
#18 by Надмозг
оказалось, это не сработает (?<!d) VBScript это не понимает, поэтому сделал через группы, вытаскивать надо из SubMatches
#19 by Tateossian
Уважаю одинэсников, которые могут в регэксп:)
#20 by mrDSide
d{2}-d{1,4}
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С