Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
Играюсь понемногу с новым в С++11. Пытаюсь задать регулярное выражение, "строка заканчивается на abc" Код: plaintext 1. 2. 3. Но что-то не получается. Где можно посмотреть синтаксис регулярных выражений и что здесь не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 19:24 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
BagaBaga, Используй regex_match ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 19:40 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
NekZИспользуй regex_match В данном случае нужен именно regex_search. BagaBagaПытаюсь задать регулярное выражение, "строва заканчивается на abc" Код: plaintext 1. 2. 3. Но что-то не получается. Код правильный. Должен вывести true(1). Если вы ждете чего-то другого, то зря :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 19:49 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
Отвечу всем. Должен вывести True. Выводит 0. Что есть False. Похоже, что получилось как в том анекдоте: Когда ты думаешь, что можешь решить проблему с помощью регулярных выражений, ты получаешь две проблемы - исходную, и регулярные выражения :) PS В моём случае ерунда, как понимаю, из-за неполной реализации regex в gcc 4.8.3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 20:54 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
BagaBaga, Судя по всему там не то что бы неполная реализация. Там просто заглушки :) https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53631 Реализовали в GCC 4.9 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 21:08 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
К счастью всегда есть Boost :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 21:09 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
А что-то у меня тоже ничего не получается... Linux, GCC... Код: plaintext 1. 2. 3. -- это ноль выводит. На счёт search/match -- я бы использовал match и другой (естественно) regexp. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 21:12 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Да, я буст regex тоже люблю. Он работает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 21:14 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
В VS 2013 Express такой код Код: plaintext 1. 2. 3. выводит истину. А в стандарте дано каким алгоритмом происходит поиск ? В 28 разделе не встретил и не указана асимптотика (или я не заметил). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 03:05 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
SashaMercury, а разве стандарт должен это описывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 08:51 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
Вы либо неудачные примеры находите либо никогда не оптимизируете. У меня глядя на этот пример возникает мысль - OMG! Это решается проверкой length, substring и проверкой на равенство "==". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 14:54 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
SashaMercuryВ VS 2013 Express такой код Код: plaintext 1. 2. 3. выводит истину. А в стандарте дано каким алгоритмом происходит поиск ? В 28 разделе не встретил и не указана асимптотика (или я не заметил). А что, бывают разные алгоритмы регулярок? Спасибо, не знал )))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 15:32 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
maytonВы либо неудачные примеры находите либо никогда не оптимизируете. У меня глядя на этот пример возникает мысль - OMG! Это решается проверкой length, substring и проверкой на равенство "==". А это уже избыточная и преждевременная оптимизация. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 15:35 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskySashaMercuryВ VS 2013 Express такой код Код: plaintext 1. 2. 3. выводит истину. А в стандарте дано каким алгоритмом происходит поиск ? В 28 разделе не встретил и не указана асимптотика (или я не заметил). А что, бывают разные алгоритмы регулярок? Спасибо, не знал )))) Есть разные реализации, их как минимум две. Классическая и перловая. Перловая требует память. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 15:36 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
SashaMercuryвыводит истину. MasterZivЕсть разные реализации, их как минимум две. Классическая и перловая. Перловая требует память. Я думал, что речь про другие алгоритмы, которые могут дать другой результат )) Так то оно понятно, что есть реализации разные, как минимум через DFA, NFA, и кривыми ручками )). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 15:40 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskymaytonВы либо неудачные примеры находите либо никогда не оптимизируете. У меня глядя на этот пример возникает мысль - OMG! Это решается проверкой length, substring и проверкой на равенство "==". А это уже избыточная и преждевременная оптимизация. Ага. Вот копипащу кусок проекта цена которого более чем шестизначная. И я такое вижу каждый день и много. И вы думаете этот код писал чайничек? Нет. Куева туча сертифицированных синьоров-помидоров. По рупам. По всем технологиями. По шаблонам и с полным циклом бизнес анализа. Только работает он медленно. И таких коде-блоков более пятисот. Код: java 1. 2. 3. 4. 5. 6. И никто не думал об оптимизациях. Тоже рассуждали ... дескыть преждевременно и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 16:56 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
maytonТолько работает он медленно. Медленно, это понятие относительное. Без контекста нет смысла обсуждать оптимизации и тем более их делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 17:29 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
Мда... контекст это... это сила. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 19:12 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
Боюсь показаться тупым (регулярных выражений не знаю), но спрошу, что значит expr.matches("^[\\d]{9}$") ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 19:20 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
Dima TБоюсь показаться тупым (регулярных выражений не знаю), но спрошу, что значит expr.matches("^[\\d]{9}$") ?Зависит от реализации. Но скорее всего это вернет true если строка состоит из девяти цифр. А на V7 это вернет true если строка состоит из девяти букв 'd' или '\'. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 19:28 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
White OwlА на V7 это вернет true если строка состоит из девяти букв 'd' или '\'. Там что убрали поддержку класса \d ? Сильно сомневаюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 19:40 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
White OwlЗависит от реализации. Но скорее всего это вернет true если строка состоит из девяти цифр. Тогда понятно негодование mayton`а. Такое бывает когда каждый пишет свой кусок не задумываясь о целом. Ошибки проектирования. Никто изначально не сказал что могут быть только цифры, поэтому максимальная проверка. mayton, синьоры-помидоры успешно сдали свою работу. Просто цель у них была сдать работу, а не что-то другое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 19:57 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyWhite OwlА на V7 это вернет true если строка состоит из девяти букв 'd' или '\'. Там что убрали поддержку класса \d ? Сильно сомневаюсь. Просто White Owl совершил, наверное, самую типичную ошибку при написании регулярок: то ли двойных кавычек не заметил, то ли просто интуитивно решил, что там сначала идёт \, а уже потом \d. :) Я так частенько, почему-то именно с регулярными выражениями ошибаюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 20:00 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyWhite OwlА на V7 это вернет true если строка состоит из девяти букв 'd' или '\'. Там что убрали поддержку класса \d ? Сильно сомневаюсь.Неа, не убирали, а не вводили, не успели потому что :) В V7 были классы :digit:, :alpha: и так далее. Потом в свободном доступе появилась библиотека pcre и posix, да и все остальные отстающие системы, быстренько подтянулись до современности. Зато в обиход вошло (и некоторое время существовало) определение "shorthand character classes" как раз для всяких \d и \w. Впрочем, этот термин я уже лет десять не слышал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 20:02 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
maytonAnatoly Moskovskyпропущено... А это уже избыточная и преждевременная оптимизация. Ага. Вот копипащу кусок проекта цена которого более чем шестизначная. И я такое вижу каждый день и много. И вы думаете этот код писал чайничек? Нет. Куева туча сертифицированных синьоров-помидоров. По рупам. По всем технологиями. По шаблонам и с полным циклом бизнес анализа. Только работает он медленно. И таких коде-блоков более пятисот. Код: java 1. 2. 3. 4. 5. 6. И никто не думал об оптимизациях. Тоже рассуждали ... дескыть преждевременно и т.д. А как нужно было сделать? Так или отказаться от регулярок? Код: java 1. 2. 3. 4. Сорри протестировать не могу это выражение, но идея понятна должна быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 20:11 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
petrav, Хотя нет, неправильно я написал. 11 чисел тоже пропустит моё выражение :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 20:14 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
Во! Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 20:17 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
petravСорри протестировать не могу это выражение, но идея понятна должна быть. У меня щас нет реквеста на баг или фичу для этого кода. Но как - только будет я уж оттянусь. Изначально - планировал выкинуть регулярки нахер. Но потом по смыслу когда - где-то идёт парсинг телефона. Где-то zip-code. Где-то даты. Планирую хотя-бы обеспечить повторное использование Matcher. В данном - кейсе строка цифр от 9 до 12. Не включая строку длиной 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 20:22 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
maytonИзначально - планировал выкинуть регулярки нахер. Но потом по смыслу когда - где-то идёт парсинг телефона. Где-то zip-code. Где-то даты. Если это полноценная БД: для начала выкинуть все значения несоответствующие формату. Не вписываются - поставить NULL. Если даты, то 32-го числа не бывает и т.д и т.п. Отфильтровав некорректные значения на уровне вставки - значительно упростишь последующие проверки. maytonВ данном - кейсе строка цифр от 9 до 12. Не включая строку длиной 11. Не буду раздувать, думаю ты понял вышесказанное. Как говорил мой начальник "Бардак автоматизировать нельзя". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 20:51 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
White OwlНеа, не убирали, а не вводили, не успели потому что :) В V7 были классы :digit:, :alpha: и так далее. Это же mayton код постил, и я думал что V7 это про java 7 )) А если V7 это про движок джаваскрипта - тогда верю что через одно место было сделано )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 21:23 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
maytonУ меня щас нет реквеста на баг или фичу для этого кода. Но как - только будет я уж оттянусь. Изначально - планировал выкинуть регулярки нахер. Но потом по смыслу когда - где-то идёт парсинг телефона. Где-то zip-code. Где-то даты. Планирую хотя-бы обеспечить повторное использование Matcher. Если это валидация ввода, то оптимизировать надо не тут, а то место в котором эта валидация вызывается настолько часто, что имеют значение задержки в доли миллисекунд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 21:26 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
petravВо! Код: plaintext 1. 2. 3. 4. Скорее всего имелась в виду оптимизация типа такого: Код: plaintext 1. 2. 3. А потом заказчик захочет поддержку дефисов и скобочек и вся оптимизация к черту )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 21:31 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyWhite OwlНеа, не убирали, а не вводили, не успели потому что :) В V7 были классы :digit:, :alpha: и так далее. Это же mayton код постил, и я думал что V7 это про java 7 )) А если V7 это про движок джаваскрипта - тогда верю что через одно место было сделано ))Не, я говорил исключительно про эхотаг :) Регулярки появились еще в 50-х, но очень долго люди не могли определиться с синтаксисом и каждый делал (да и продолжают делать) кто во что горазд. Ну и в никсах/posix довольно долго была своя собственная реализация, которая и развивалась самостоятельно под своими номерами и именовалась "V#". Насколько я знаю V7 была последней перед вводом PCRE в стандарт в качестве основной реализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 21:46 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyСкорее всего имелась в виду оптимизация типа такого: Код: plaintext 1. 2. 3. Тогда лучше: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 21:48 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskypetravВо! Код: plaintext 1. 2. 3. 4. Скорее всего имелась в виду оптимизация типа такого: Код: plaintext 1. 2. 3. А потом заказчик захочет поддержку дефисов и скобочек и вся оптимизация к черту )) Да, ваш вариант быстрее. Я как-то больше думал над устранением дублирования кода (исходный вариант с тремя регулярками был ужасен). Но если думать именно о производительности, то, имхо, там легче написать свою функцию проверки — там всего несколько строк — и отказаться от регулярок. Думаю будет на порядок быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 22:50 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyЕсли это валидация ввода, то оптимизировать надо не тут, а то место в котором эта валидация вызывается настолько часто, что имеют значение задержки в доли миллисекунд. В этом комплексе 20 тыс пользователей. И каждый поисковый запрос (типа полнотекстового поиска) проходит длинный конвейер проверок в т.ч. и эти регулярки. Впрочем я не хочу оффтопить и отвлекать от главной темы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 23:09 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
mayton, Если не ошибаюсь, мы как то уже гоняли тесты буустовских регулярок. Порядок скорости был типа миллион в секунду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2015, 10:14 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
Зимарглmayton, Если не ошибаюсь, мы как то уже гоняли тесты буустовских регулярок. Порядок скорости был типа миллион в секунду. Э... во первых я про буст. Я вообще в принципе ворчу. На юзкейсы. Во вторых мне как человеку дотошному и занудному совершенно непонятна фраза "миллион в секунду". Миллион попугаев или слонёнков. За кадром остаётся сложность самой регулярки. А это - ни хер собачий. Это конечный автомат мать его. И отклик от него (наверное) зависит от того как выглядит сам expression. И наверное отклик зависит от длинны строки которую мы анализируем. Поэтому фраза 1000000 в сек. это как-то ниочём. Ну тоесть для меня она неинформативна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2015, 11:30 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
maytonПоэтому фраза 1000000 в сек. это как-то ниочём. Ну тоесть для меня она неинформативна. Гггг. Это написал человек, который в описании проблемы указал только: maytonТолько работает он медленно. 1000000 - это хоть какая-то конкретика, верхний предел скорости. А вот что такое "медленно" мы так и не узнали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2015, 14:36 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
Пока тут вообще никакой конкретики ;) Марк об этом подробно написал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2015, 14:42 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
10^6 может быть, но не значит что это максимум, среднее или что-то ещё. Такое число может быть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2015, 14:44 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky1000000 - это хоть какая-то конкретика, верхний предел скорости. А вот что такое "медленно" мы так и не узнали. Есть разные подходы к оценке производительности. Мой базируется на вычислении НАПРАВЛЕНИЙ куда можно улучшать. В данном случае как решили коллеги (совершенно верно) в устранении ненужных или покрывающих друг друга предикатов. Выше мне сказали дескыть - авот в бусте - 1000000 чего-то там такого. И что? И где? И как? И какой был best practices? Просто я не понимаю какую инфу я из этого должен взять? Что мне надо юзать буст? Извините меня дорогие коллеги. Ну также нельзя ну ё-моё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2015, 14:58 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
mayton, Я пример привел, что сам по себе регекс быстрый и будет узким местом довольно в редких случаях приложений. Хочешь подробности - делай конкретный юзкейс и тестируй. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2015, 19:03 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
maytonAnatoly Moskovsky1000000 - это хоть какая-то конкретика, верхний предел скорости. А вот что такое "медленно" мы так и не узнали. Есть разные подходы к оценке производительности. Мой базируется на вычислении НАПРАВЛЕНИЙ куда можно улучшать. В данном случае как решили коллеги (совершенно верно) в устранении ненужных или покрывающих друг друга предикатов. Выше мне сказали дескыть - авот в бусте - 1000000 чего-то там такого. И что? И где? И как? И какой был best practices? Просто я не понимаю какую инфу я из этого должен взять? Что мне надо юзать буст? Извините меня дорогие коллеги. Ну также нельзя ну ё-моё. Не согласен. Реализация на Си быстрее, как понимаю, задача у тебя устоявшаяся и требующая ускорения, т.е. переписав ее на С ты однозначно получишь ускорение, а буст или не буст зависит только от задачи. Оптимизировать излишние проверки и в С не помешает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2015, 20:26 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
Dima TНе согласен. Реализация на Си быстрее, как понимаю, задача у тебя устоявшаяся и требующая ускорения, т.е. переписав ее на С ты однозначно получишь ускорение, а буст или не буст зависит только от задачи. Оптимизировать излишние проверки и в С не помешает. Полностью исключено. Заказчик будет против. +Там наши собственные требования по интеграции. Java + несколько слоёв кодогенерации. Аспекты и кросскомпилляторы. Подключение JNI сделает задачу непрозрачной для тестирования на Linux да и вообще добавляет огромное количество кейсов исследования. Вобщем отпадает. По поводу бенчмарков - это тема. Я буду писать модульные тесты когда переколбашу модуль поиска. Тогда у меня будут цифры. Сколько там поисков в секунду. БД заменю на Mocks чтобы убрать случайные влияния и можно будет видеть чистый алгоритм с регулярками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2015, 21:20 |
|
||
|
С++11 regex
|
|||
|---|---|---|---|
|
#18+
maytonнесколько слоёв кодогенерации Начните отсюда оптимизировать, потом уже микросекундами займетесь )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2015, 22:08 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2018800]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
53ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
| others: | 265ms |
| total: | 436ms |

| 0 / 0 |
