Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Регулярного выражения: помощь в парсинге строки

62K
15 января 2013 года
Cyberatino
24 / / 06.03.2012
Нужно убрать из строки Все совпадения вида "\d{3} "

560 703786 - Моноблок 32+4 прямой 749 712667 - Мет. вертикальная планка на 10 крючков 834 718004 - Дисплей-паразит Non Gum широкий 605 704018 - Основание плоское И 00 14 606 704021 - Настенное крепление 648 704827 - Поворотная нога для И360


Однако убирается только самое первое совпадение:

703786 - Моноблок 32+4 прямой 749 712667 - Мет. вертикальная планка на 10 крючков 834 718004 - Дисплей-паразит Non Gum широкий 605 704018 - Основание плоское И 00 14 606 704021 - Настенное крепление 648 704827 - Поворотная нога для И360
8
16 января 2013 года
mfender
3.5K / / 15.06.2005
Не указано в чём используется поиск. Например, в JavaScript у RegExp есть флаг "g" для поиска по всей строке. Без этого флага будет произведено действие только над первым совпадением.

Но вобщем, при помощи браузера и консоли я решил этот вопрос так:


 
Код:
var p = /([^\d])(\d{3})(?=\x20)/g;
var s = ' 560 703786 - Моноблок 32+4 прямой 749 712667 - Мет. вертикальная планка на 10 крючков 834 718004 - Дисплей-паразит Non Gum широкий 605 704018 - Основание плоское И 00 14 606 704021 - Настенное крепление 648 704827 - Поворотная нога для И360';
console.log(s.replace(p, '').replace(/\x20/, ''));
На выхлопе получаем строку " 703786 - Моноблок 32+4 прямой 712667 - Мет. вертикальная планка на 10 крючков 718004 - Дисплей-паразит Non Gum широкий 704018 - Основание плоское И 00 14 704021 - Настенное крепление 704827 - Поворотная нога для И360"

Чуток поясню: ищем три цифры, у которых перед ними всё что угодно кроме цифр, а после - пробел (\x20).
Единственное что нужно сделать - добавить пробел перед строкой, иначе этот паттерн не отработает "560" в начале. Наверное, и этому есть какое-то решение без пробела...
62K
16 января 2013 года
Cyberatino
24 / / 06.03.2012
@mfender, немного считерил, но похоже на правду - спасибо!
чит в пробеле перед началом строки, который был самовольно поставлен. но в целом решение подходит.
поскольку пришлось решать это в асп.нете, то я сделал несколько проще: ( \d{3} ) - результат проверяю на калькуляторе
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог