Снегопат

Обсуждение Снегопата
Текущее время: 28 апр 2024, 11:13

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Ликбез по регулярным выражениям
СообщениеДобавлено: 28 авг 2012, 12:12 
Не в сети

Зарегистрирован: 24 авг 2011, 17:26
Сообщения: 154
Вчера впервые использовал их в работе. Могучая штука, только много еще не понятно.
Задача - получить номер без префикса.
Пример номера:
РНП-У-08/15-016
С помощью шаблона "\d+[/-]*\d*[/-]*\d*" получаю подстроку "08/15-016". Но заказчик хочет, чтобы в первой и последней группе цифр удалялись лидирующие нули.
Например:
08/15-016 - 8/15-16
07/06-001 - 7/06-1
07/09-011 - 7/09-11
Реально это сделать регулярными выражениями, или проще как проще?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 28 авг 2012, 13:00 
Не в сети
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:53
Сообщения: 448
Откуда: Саратов
Регулярные выражения предназначены как для поиска так и для замены значений, большинство библиотек это поддерживают.
Твоя задача при помощи регулярок на JavaScript решается так:

Код:
var numDoc = "РНП-У-08/15-016";
datePart = numDoc.replace(/^.+?(\d+[\/\-]*\d*[\/\-]*)0*(\d*)$/, "$1$2");
print(datePart); // выведет 08/15-16


Побаловаться можно здесь: http://ideone.com/TwJcZ

_________________
С уважением,
Александр Кунташов
Канал про 1С в Телеграме: @kuntashov_devnotes


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 28 авг 2012, 13:08 
Не в сети

Зарегистрирован: 20 дек 2011, 10:31
Сообщения: 588
Откуда: Украина, Запорожье
Я бы выделил группы, а потом уже к группам применил бы регулярное выражение. Так легче для понимания. А то иногда встречаешь комментарии для регулярок "Простите, это реально работает."
Вложение:
2012-08-28_1307.png
2012-08-28_1307.png [ 73.72 КБ | Просмотров: 7041 ]


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 28 авг 2012, 13:22 
Не в сети
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:53
Сообщения: 448
Откуда: Саратов
Наличие групп влияет на производительность, но да, в данном случае это совершенно несущественно.
Еще с кватификатором * спорно - к месту ли он ). Скорее, там можно было бы что-то конкретнее написать (типа \d\d или \d{0,3}), потому что длина номера ограничена.

p.s.
Классный скриншот, че :D

_________________
С уважением,
Александр Кунташов
Канал про 1С в Телеграме: @kuntashov_devnotes


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 28 авг 2012, 13:38 
Не в сети

Зарегистрирован: 24 авг 2011, 17:26
Сообщения: 154
* ставил для обратной совместимости - старые номера имеют формат ПараБуквМногоЦифр.
А скриншот хороший - благодаря ему нашел скрипт "RegExpEditor.js". С ним намного проще.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB