Снегопат 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 [ 73.72 КБ | Просмотров: 8298 ] |
Автор: | kuntashov [ 28 авг 2012, 13:22 ] |
Заголовок сообщения: | Re: Ликбез по регулярным выражениям |
Наличие групп влияет на производительность, но да, в данном случае это совершенно несущественно. Еще с кватификатором * спорно - к месту ли он ). Скорее, там можно было бы что-то конкретнее написать (типа \d\d или \d{0,3}), потому что длина номера ограничена. p.s. Классный скриншот, че |
Автор: | Classic [ 28 авг 2012, 13:38 ] |
Заголовок сообщения: | Re: Ликбез по регулярным выражениям |
* ставил для обратной совместимости - старые номера имеют формат ПараБуквМногоЦифр. А скриншот хороший - благодаря ему нашел скрипт "RegExpEditor.js". С ним намного проще. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |