|
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
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |