Снегопат
https://snegopat.ru/forum/

Ликбез по регулярным выражениям
https://snegopat.ru/forum/viewtopic.php?f=6&t=246
Страница 1 из 1

Автор:  Classic [ 28 авг 2012, 12:12 ]
Заголовок сообщения:  Ликбез по регулярным выражениям

Вчера впервые использовал их в работе. Могучая штука, только много еще не понятно.
Задача - получить номер без префикса.
Пример номера:
РНП-У-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
Реально это сделать регулярными выражениями, или проще как проще?

Автор:  kuntashov [ 28 авг 2012, 13:00 ]
Заголовок сообщения:  Re: Ликбез по регулярным выражениям

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

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


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

Автор:  sosnae [ 28 авг 2012, 13:08 ]
Заголовок сообщения:  Re: Ликбез по регулярным выражениям

Я бы выделил группы, а потом уже к группам применил бы регулярное выражение. Так легче для понимания. А то иногда встречаешь комментарии для регулярок "Простите, это реально работает."
Вложение:
2012-08-28_1307.png
2012-08-28_1307.png [ 73.72 КБ | Просмотров: 8298 ]

Автор:  kuntashov [ 28 авг 2012, 13:22 ]
Заголовок сообщения:  Re: Ликбез по регулярным выражениям

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

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

Автор:  Classic [ 28 авг 2012, 13:38 ]
Заголовок сообщения:  Re: Ликбез по регулярным выражениям

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

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/