Имя: Пароль:
1C
 
VBScript.RegExp поиск в строке последовательности цифр
,
0 Надмозг
 
20.10.17
18:20
Хочу найти в строке последовательность цифр, длину ее не знаю
Для любой цифры используется шаблон [0-9], для двух [0-9][0-9]
А если я не знаю, сколько их?

RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.Pattern = "[0-9]"; // Что тут написать?

Копаюсь тут, пока не понял https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/RegExp

Если поставить звездочку [0-9]*, то, по-моему, это не то.
1 lodger
 
20.10.17
18:41
вот довольно полная шпаргалка.
http://www.exlab.net/files/tools/sheets/regexp/regexp.png
там есть пример интервала чисел от 1 до 50.
имхо, по аналогии можно и запилить...
2 Филиал-msk
 
20.10.17
18:48
\d+
3 Филиал-msk
 
20.10.17
18:48
4 Надмозг
 
20.10.17
18:49
(2) так разве не будут искаться повторы предыдущих значений?
Ну допустим, 11 или 1111 найдется, а 1234 нет
5 Надмозг
 
20.10.17
18:52
(1) там, по-моему, слишком наворочено, плюс есть ограничение по длине. Я это видел
Вроде, вот так без ограничения по длине [0-9]\{1,\}
но это не точно)

Просто мне затруднительно тестить всё в данный момент, нужен готовый вариант или несколько
6 kittystark
 
20.10.17
18:52
(4) в (2) верно сказано, т.к.: \d - любая цифра,  + - один и более раз
7 Надмозг
 
20.10.17
18:53
(3) это хорошо, попробую
8 kittystark
 
20.10.17
18:53
(5) слеши лишние
9 Надмозг
 
20.10.17
18:55
(6) по описалову так
    
Соответствует предыдущему символу повторенному 1 или более раз. Эквивалентно {1,}.

Например, /a+/ соответствует 'a' в "candy" и всем символам 'a' в "caaaaaaandy".

Я вот и не пойму, предыдущий символ это в конкретной строке, или символ шаблона.
10 Надмозг
 
20.10.17
18:55
(8) окей
11 kittystark
 
20.10.17
18:59
если доку почитать внимательно, то
[0-9] это \d
{1,} это +
12 Надмозг
 
20.10.17
19:00
(11) Да, все,
\d+ работает, как и [0-9]+

всем спасибо
13 Надмозг
 
26.10.17
14:53
Поднимаю тему...

Ищу в строке последовательность ХХ-ХХХХ
Х - цифра.  После черточки может быть от 1 до 4 цифр

Написал такое
\d{2}-\d{1,4}

Но нужно чтобы последовательность ХХХ-ХХХХ уже не попадала, т.е. не обрезало, а именно ничего не находилось

Добавил в начале перед выражением
(\D|^)
Это означает не цифра или начало строки

Но в таком случае если будет такой текст
абвгд12-123

то попадет д12-123, а мне надо 12-123, т.е. чтобы условие пред строкой поиска проверялось, но значение не попадало

Как правильно написать?
14 lodger
 
26.10.17
15:04
(13) вызови регэксп второй раз...
15 Надмозг
 
26.10.17
15:09
(14) Слишком топорно

Искал искал, потом написал сюда, и внезапно нашел

(?<!\d) - поставить перед выражением, будет смотреть перед найденной строкой, если не цифра, то вернет строку, а значение перед ней не вернет
В итоге так выглядит
(?<!\d)\d{2}-\d{1,4}

(Для потомков: в теме две подзадачи по рег выражениям последний, последний пост не относится напрямую к первому)
16 RomaH
 
naïve
26.10.17
15:18
(13) - есть ведь группы
(\D|^)(\d{2}-\d{1,4})

группа 2 дает правильный результат
17 Надмозг
 
26.10.17
15:21
(16) да, через вторую группу тоже можно
18 Надмозг
 
27.10.17
12:09
(16) (15) оказалось, это не сработает (?<!\d) VBScript это не понимает, поэтому сделал через группы, вытаскивать надо из SubMatches
19 Tateossian
 
27.10.17
12:26
Уважаю одинэсников, которые могут в регэксп:)
20 mrDSide
 
27.10.17
12:33
(13) \b\d{2}\-\d{1,4}\b
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.