powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Форматирование номера телефона регулярками на питоне
98 сообщений из 98, показаны все 4 страниц
Форматирование номера телефона регулярками на питоне
    #40022970
vi0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день
Прошу покритиковать решение. Интересно где есть избыточность - может быть можно меньшим количество кода обойтись или более быстрое решение есть.

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
def check(text):

    if re.search(r'^(\+)?(?:[78][\s\(]?\d\d\d\)?\s?\d\d\d-?\d\d-?\d\d|\d\d\d\)?\s?\d\d\d-?\d\d-?\d\d)$', text) == None:
        print('Fail!')
    else:
        list1 = re.findall(r'\d', text)
        list1 = ''.join(list1)

        if len(list1) == 10:
            print(re.sub(r'(\d{3})(\d{3})(\d{2})(\d{2})', r'+7 \1 \2-\3-\4', list1))
        else:
            print(re.sub(r'(\d)(\d{3})(\d{3})(\d{2})(\d{2})', r'+7 \2 \3-\4-\5', list1))
        
check('+7 123 456-78-90')
check('8(123)456-78-90')
check('7(123) 456-78-90')
check('1234567890')
check('123456789')
check('+9 123 456-78-90') 
check('+7 123 456+78=90')
check('+7(123 45678-90')
check('8(123  456-78-90')
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40022976
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как сделать минимально самодостаточный сорс? А то в этом чего-то не хватает.

Код: python
1.
2.
3.
4.
5.
6.
7.
$ python3 phone.py 
Traceback (most recent call last):
  File "phone.py", line 14, in <module>
    check('+7 123 456-78-90')
  File "phone.py", line 3, in check
    if re.search(r'^(\+)?(?:[78][\s\(]?\d\d\d\)?\s?\d\d\d-?\d\d-?\d\d|\d\d\d\)?\s?\d\d\d-?\d\d-?\d\d)$', text) == None:
NameError: name 're' is not defined
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40022977
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильное решение задачи начинается с её правильной постановки. А твое "как бы его мог ввести человек" это не задача, а пепец. Человек "может" ввести его задом наперед в восьмеричном исчислении. Опиши формально, какой формат считается корректным, тогда можно будет о чем-то говорить.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40022981
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иногда бизнес приходит к программисту и почёсывая ухо говорит дескыть вот надо такую штуку
сделать. Шобы значить вот эти целепхончики были гуд. А эти - фуфу. Слишком сильно давить
на наличие постановки я-бы не стал. И данная техническая сторя вполне по силу к обобщению
программистом.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40022982
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
бизнес приходит к программисту

Ну и, вот, у меня к "бузинесу", например, сразу же вопрос: +9 123 456-78-90 вполне себе нормальный индийский номер, с какого лешего он "Fail!".
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40022984
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
mayton
бизнес приходит к программисту

Ну и, вот, у меня к "бузинесу", например, сразу же вопрос: +9 123 456-78-90 вполне себе нормальный индийский номер, с какого лешего он "Fail!".

Беря во внимание что у нас сейчас нед диалога с бизнесом - предлагаю просто порассуждать на тему
критики решения. А тестовый кейс просто воспринимать как данность.

Если что - скорректируем.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40022987
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саму регулярку что писал автор я еще не смотрел. Но КМК если мы будем явно идти от позитивных кейсов - то
мы потеряемся. Нам проще проверить негативные. Тоесть разделить универсум на хорошие телефоны и плохие.
А не так как автор - искать из вселенной немалое и тоже по мощности бесконечное количество вариантов
и потом в остатке получать негативные.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40022998
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то так. Еще добавить проверку на парность скобочек, пофиксить ошибку компилляции
и все тесты будут зеленые.

Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
def check(text):
    original = text
    chars = "()- "
    for c in chars: 
        text = text.replace(c, "")
    if (text.startswith('1') or (text.find(text,"+",1)) >= 0):
        print('Fail')
    else:
        print(original)

        
check('+7 123 456-78-90')
check('8(123)456-78-90')
check('7(123) 456-78-90')
check('1234567890')
check('123456789')
check('+9 123 456-78-90') 
check('+7 123 456+78=90')
check('+7(123 45678-90')
check('8(123  456-78-90')
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023017
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Саму регулярку что писал автор я еще не смотрел.

Я бы вообще делал без регулярки.
1) убираем из строки все кроме цифр
2) если цифр 11 и начинается на 7 - не делаем ничего
3) если цифр 11 и начинается на 8 - заменяем 8 на 7
4) если цифр 10, то добавляем спереди 7
5) иначе ошибка.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023024
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вообще - не знаю python. Так. Посмотрел названия строковых функций и как делать foreach.

Кто знает что за херня?

Код: python
1.
2.
3.
4.
5.
6.
Traceback (most recent call last):
  File "phone.py", line 28, in <module>
    check('+7 123 456-78-90')
  File "phone.py", line 22, in check
    if (text.startswith('1') or (text.find(text,"+",1)) >= 0):
TypeError: slice indices must be integers or None or have an __index__ method
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023031
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
разделить универсум на хорошие телефоны и плохие.

С практической точки зрения, проверить "хороший" телефон можно только позвонив на него. Какой смысл в "хорошести" номера, если на него все равно никто не отвечает.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023033
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В топике речь идет о сборе сведений. После того как телефоны собраны - их можно
дать на вход роботу который делает обзвон. Но согласись.. было бы странно роботу
скидывать мусор вообще не проверив ничего.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023060
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лично меня задолбали телефонные спамеры, я бы этот топик просто закрыл, но поделюсь методом борьбы с этими уродами: звонок принять, не сбрасывать, просто положить телефон на стол и пусть они кричат "алло". Робот переключит на оператора, оператор поаллокает, эффективность спама упадет.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023070
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Лично меня задолбали телефонные спамеры, я бы этот топик просто закрыл, но поделюсь методом борьбы с этими уродами: звонок принять, не сбрасывать, просто положить телефон на стол и пусть они кричат "алло". Робот переключит на оператора, оператор поаллокает, эффективность спама упадет.

Андроид неплохо детектирует спам по своим БД.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023071
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Меня бы больше беспокоили не спамеры а коллекторские звонки когда номер не определен.
Интересно зачем мобильные операторы это позволяют.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023075
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверка парности скобочек - была задачей на собес.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023102
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Интересно зачем мобильные операторы это позволяют.
Затем, что сбор долгов - законный бизнес, а сокрытие номера - законная услуга.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023105
vi0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Правильное решение задачи начинается с её правильной постановки. А твое "как бы его мог ввести человек" это не задача, а пепец. Человек "может" ввести его задом наперед в восьмеричном исчислении. Опиши формально, какой формат считается корректным, тогда можно будет о чем-то говорить.
Согласен. Сейчас, в рамках самообучения регулярками, я просто прорешиваю задачи которую нашел в сети. При решении практических задач действительно нужно уточнить требования и сделать грамотную постановку. Здесь же я старался выжать максимум для того, чтобы больше научиться. Поэтому просто делал так чтобы мой результат совпадал с тем что требуется по задаче - это на скрине.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023106
vi0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, прошу прощения, исходник не полный. В начало нужно добавить import re
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023107
АСУ ТПшник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЯ бы вообще делал без регулярки.
1) убираем из строки все кроме цифр
2) если цифр 11 и начинается на 7 - не делаем ничего
3) если цифр 11 и начинается на 8 - заменяем 8 на 7
4) если цифр 10, то добавляем спереди 7
5) иначе ошибка.
Вот кстати да.
Замечательное решение.
На кой черт проверять всякие дефисы и прочие блажи, которые сделаны для читаемости и или запоминаемости человеком, если по тому же телефону идет тупой дозвон по набору циферок.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023108
vi0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЯ вообще - не знаю python. Так. Посмотрел названия строковых функций и как делать foreach.
Кто знает что за херня?
mayton, так вроде нет ошибки
text.find("+",1)
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023115
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
mayton
Саму регулярку что писал автор я еще не смотрел.

Я бы вообще делал без регулярки.
1) убираем из строки все кроме цифр
2) если цифр 11 и начинается на 7 - не делаем ничего
3) если цифр 11 и начинается на 8 - заменяем 8 на 7
4) если цифр 10, то добавляем спереди 7
5) иначе ошибка.

у меня так и сделано. Только код страны ($cn) не разбирается, потому что для РФ.
Но в целом, всё что левее 10 цифр - это код страны. Либо придётся ловить дефисы, если код города по длине не 3...
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
// string с телефоном нужно разобрать и превратить в цифры
// $phone_str = любой набор из цифр: +7(916) 366-6222; 9163666222; 916 3666222;
// $minmax: допустимо 10-11 цифр (7 иногда есть)
    function str2arr(&$str, $minmax = [10, 11], $cn = 7)
    {
        $code = $num = 0;
        $phone_str = preg_replace("/[^\d]/", '', substr($str, 0, 25)); // убрать левые символы в телефоне

        if (empty($phone_str))
            {return;}
        
        $strlen = strlen($phone_str);
        if ($strlen < $minmax[0]   && $strlen > $minmax[1])
            {return;}

        $code = (int) substr($phone_str, -10, 3);
        $num = (int) substr($phone_str, -7, 7);
    
        // иногда могут прислать 925 0000000
        if (empty($code)   || empty($num))
            {return;}
            
        return [$cn, $code, $num];
    }


непонятно только, а это как:
авторЯ бы вообще делал без регулярки.
1) убираем из строки все кроме цифр
БЕЗ регулярки?
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023118
vi0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соглашусь, что для проверки номера регулярки можно использовать минимально. Думаю, при они будут уместнее для поиска номеров в тексте.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023145
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78
непонятно только, а это как:
авторЯ бы вообще делал без регулярки.
1) убираем из строки все кроме цифр

БЕЗ регулярки?
Ну, именно это можно и регуляркой, а можно и без неё. Не знаю, как в питоне, но в шарпе без регулярки это можно как-нибудь так:
Код: c#
1.
string.Concat(phone.Where(c => c is >= '0' and <= '9'))
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023148
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу этого выражения и моих претензий.

Код: sql
1.
if re.search(r'^(\+)?(?:[78][\s\(]?\d\d\d\)?\s?\d\d\d-?\d\d-?\d\d|\d\d\d\)?\s?\d\d\d-?\d\d-?\d\d)$', text) == None:



Существуют метрики сложности кода. Они оценивают количество циклов и ветвлений и количество
уникальных сущностей типа переменная или функция. Это не для регулярок а для простых
императивных языков где есть if-else-switch-while-for-dowhile...e.t.c

Они также оценивают мозговые усилия человека по анализу или прочтению кода.

В данном конкретном случае - компактность записи регулярки в 1 строку - это некий самообман.
Здесь мы используя квантовую механику регулярок сжали целый алгоритм парсера и описали в строке.
И это есть проблема.

На самом деле программисту удобно изучать код описаный короткими записями с отступами (эдакий себе Haskell/Lisp/Python style)
при котором вложение описывается как глубина отступа от края листа.

Изучать - же это выражение - сложно. Нам как-бы хочется вставить туда перенос.
Я обычно добавляю смысловые метки наподобие.

Код: sql
1.
(?<mobile_operator_prefix>(\d{1,3})\


и переводы строк после каждой группы с меткой.

Это позволяет ориентироваться по смыслам.

Писать-же 100% логики в регулярке - это как экспериментировать с brainfck. Оно работает - но
разработчик тратит больше ценных человеко-часов на анализ проблем впоследствии.

И это та причина по которой Perl исходники обычно non-supportable и умирают будучи вытесняемыми
более простыми и понятными языками в сегменте веба например.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023159
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АСУ ТПшник
тупой дозвон по набору циферок.

Если, конечно, забыть о номерах типа 0-800-FUCKHERE.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023162
vi0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Они также оценивают мозговые усилия человека по анализу или прочтению кода.
В данном конкретном случае - компактность записи регулярки в 1 строку - это некий самообман.
Здесь мы используя квантовую механику регулярок сжали целый алгоритм парсера и описали в строке.
И это есть проблема.
С этим согласен. Я сейчас в стадии изучения. В том числе пытаюсь понять где без них никуда, и проще применить регулярку чем писать лесенку if then
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023163
vi0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, вообще сейчас мне кажется, что нужно было в языке пробел оставить как разделительный символ, а символ пробела всегда применять как \s
а то не понятно кого мы обманываем слепляя все символы в одну строку, и нужно напрягаться чтобы понять где там начало конструкции а где конец
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023164
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Был такой Джон Бекус. Он причастен к созданиям спецификаций первых языков программирования.

Но прославился он тем что придумал форму Бэкуса-Науэра. Вобщем это некий декларативный
язык который описывает грамматики. И описывает их достаточно красиво. И в этом языке
есть некая плавность или последовательность в разработке кода. Тоесть в регулярке
у вас обычно либо всё работает либо ничего не работает. А в генераторах парсеров Бэкуса
вы можете красиво разделять задачу на части. Скомпилировать парсер на вашем ЯП. И оттестить
с получением отдадочных сведений об ошибке.

Например мобильный телефон может иметь локальный формат и международный. Этот рул описывается примерно так.

Код: sql
1.
mobile_phone ::= local | international



Далее вы, как господь который создает вселенную, описываете все что там будет.
Цифры.

Код: sql
1.
digit ::= 0 | 1 | 2 | .... | 9



И потом число как рекурсивное самоопределение через цифру.
Потом выражения телефонных форматов. Кодов стран. Диапазонов номерной емкости. e.t.c.

Код: sql
1.
local ::= ....



Я не призываю юзать БНФ. Я их сам юзал кажется 1.5 раза в жизни. Я просто привожу
пример что кроме регулярок есть еще другой мир. Более красивый и наглядный.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023165
vi0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vi0
mayton, вообще сейчас мне кажется, что нужно было в языке пробел оставить как разделительный символ, а символ пробела всегда применять как \s
а то не понятно кого мы обманываем слепляя все символы в одну строку, и нужно напрягаться чтобы понять где там начало конструкции а где конец
вы меня натолкнули на мысль, оказывается это уже есть - флаг VERBOSE - позволяет в шаблоне делать переносы
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023166
vi0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
,
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023169
RMT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RMT
Гость
Была такая задача на практике: форматировать полученную стрингу в номер тлф по E164 и записать в БД. Воспользовался готовой либой от гугла- https://github.com/google/libphonenumber.
Накидал юнит тестов для проверки правильности работы алгоритма и сдал работу.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023180
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
mayton
Саму регулярку что писал автор я еще не смотрел.

Я бы вообще делал без регулярки.
1) убираем из строки все кроме цифр
2) если цифр 11 и начинается на 7 - не делаем ничего
3) если цифр 11 и начинается на 8 - заменяем 8 на 7
4) если цифр 10, то добавляем спереди 7
5) иначе ошибка.

Именно.
Дополнительно можно добавить:
0.5) Делаем трансляцию букв в цифры (A,B,C -> 2, D,E,F ->3 и т.д.).
4.5) Если вторая цифра не 9, то ошибка.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023193
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vi0
vi0
mayton, вообще сейчас мне кажется, что нужно было в языке пробел оставить как разделительный символ, а символ пробела всегда применять как \s
а то не понятно кого мы обманываем слепляя все символы в одну строку, и нужно напрягаться чтобы понять где там начало конструкции а где конец
вы меня натолкнули на мысль, оказывается это уже есть - флаг VERBOSE - позволяет в шаблоне делать переносы

Ты и без вербозов мог это сделать. Я попробовал эксейпинг мультилайнов. Работает.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
mayton@ryzen-ssd:$ python3
Python 3.8.5 (default, Jul 28 2020, 12:59:40) 
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> print("Hello \
... world")
Hello world
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023202
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
mayton
Саму регулярку что писал автор я еще не смотрел.

Я бы вообще делал без регулярки.
1) убираем из строки все кроме цифр
2) если цифр 11 и начинается на 7 - не делаем ничего
3) если цифр 11 и начинается на 8 - заменяем 8 на 7
4) если цифр 10, то добавляем спереди 7
5) иначе ошибка.

+1. Когда начал читать топик, собирался сказать практически то же самое. Основное отличие - для первого пункта регулярка вполне уместна, для 2-4 я тоже не стал бы слишком возражать.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023212
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я не призываю юзать БНФ. Я их сам юзал кажется 1.5 раза в жизни. Я просто привожу
пример что кроме регулярок есть еще другой мир. Более красивый и наглядный.

да быстрее будет просто все символы в строке перебрать и сравнить их с массивом 0-9
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023213
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78
mayton
Я не призываю юзать БНФ. Я их сам юзал кажется 1.5 раза в жизни. Я просто привожу
пример что кроме регулярок есть еще другой мир. Более красивый и наглядный.

да быстрее будет просто все символы в строке перебрать и сравнить их с массивом 0-9

Да. Можно и все символы перебирать. Главное - код должен быть понятным для читающего.
Регулярки создавались не для того чтобы запутать другого программиста. А для того чтобы помочь.
Чтоб понять всю глубину глубин - просто представте что вам в саппорт упадет два варианта исходника.
Регулярка длиной в строку экрана. Или императивный алгоритм с 1 циклом как я приводил в примере.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023227
Ы2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.
пропущено...
тся на 8 - заменяем 8 на 7
4) если цифр 10, то добавляем спереди 7
5) иначе ошибка.
Именно.
Дополнительно можно добавить:

4.5) Если вторая цифра не 9, то ошибка.

За что вы так? Вот захочу позвонить в приемную президента РФ (тел.: 8 495 625 35 81) или в мэрию Томска (они так пишут: (+7 3822) 99-13-77), а ваше правило не даст.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023259
vi0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Ты и без вербозов мог это сделать.

Не получается без:
Код: python
1.
2.
3.
4.
5.
6.
7.
import re

print(re.findall(r'''
  \d''', '1'))

print(re.findall(r'''
  \d''', '1', re.VERBOSE))


Результат:
[]
['1']


https://docs.python.org/3/library/re.html
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023260
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чувак. В multiline вставляются физически символы перевода строк.

А я говорю о дизайне исходника без перевода строк.
Но выглядящем как с переводом.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023261
vi0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Чувак. В multiline вставляются физически символы перевода строк.

А я говорю о дизайне исходника без перевода строк.
Но выглядящем как с переводом.
Я с таким не работал. Как это использовать например в Visual studio code?
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023278
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не знаю Python и не использую vs code.

Я просто проверил в repl реакцию python на эскейпинг в конце.

И все что я писал - не имеет отношения к verbose.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023284
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мультилайн вообще можно по разному сделать. Для java:

1)
Код: java
1.
2.
3.
String fuckenMultiline = "This\n " +
                            " is\n " +
                          " multiline\n";



2) Какая-то своя функция
Код: java
1.
2.
3.
FuckenUtils.multiline("This",
  " is",
  " multiline"



3) Начиная с JDK-13:
Код: java
1.
2.
3.
  """This
  is
  multiline"""
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023306
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Регулярки создавались для того чтобы помочь.

да, только они медленные, поэтому лучше заменять, где возможно.
PVS-studio, кстати, работает без них, например.
mayton
Регулярка длиной в строку экрана. Или императивный алгоритм с 1 циклом как я приводил в примере.

в этом примере?
mayton
Далее вы, как господь который создает вселенную, описываете все что там будет .

звучит как-то сложно...
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023307
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я просто привожу пример что отладка регулярок может представлять собой проблему.
И ведь это (по топику) не самая сложная регулярка.

Регулярка которая проверяет email где-то была опубликована и она была размером
с лист А4 текста.

Это мать ево unsupportable. Или надо быть экспертом.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023317
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Регулярка которая проверяет email где-то была опубликована и она была размером с лист А4 текста. Это мать ево unsupportable. Или надо быть экспертом.

Для начала это вопрос формата. Если записывать регулярку в стиле brainfuck - понятно, она может быть непроста в поддержке. С другой стороны, их поддержка требуется очень редко. Но никто не мешает сделать структурированную форму записи регулярок, хоть тот же XML для любителей. Со всеми атрибутами и комментариями. А сгенерить по xml строку итогового выражения - ну совершенно не сложно.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023325
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Регулярка которая проверяет email где-то была опубликована и она была размером
с лист А4 текста.

Это мать ево unsupportable. Или надо быть экспертом.

У меня рабочее мыло нестандартное, одни цифры и .ru, оформлял на госуслугах заявление на замену водительских прав, почта рабочая не прошла проверку, пришлось @mail.ru указать.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023333
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ы2
За что вы так? Вот захочу позвонить в приемную президента РФ (тел.: 8 495 625 35 81) или в мэрию Томска (они так пишут: (+7 3822) 99-13-77), а ваше правило не даст.

Раньше для городских номеров не писали +7 или 8, т.е. корректная запись (495) 625 35 81 или (3822) 99-13-77
есть еще маленькие города с пятизначными номерами, например администрация Ишима (34551) 5-15-00
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023335
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
есть еще маленькие города с пятизначными номерами

По-моему, таких уже нет. У нас, например, еще при царе горохе четвертую цифру кода города превратили в первую цифру номера. Я уверен, что это делается какой-нибудь простейшей перенастройкой АТС.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023336
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
По-моему, таких уже нет.
Пять цифр в (локальном) номере - норма для маленьких населённых пунктов.
А маленьких населённых пунктов - много.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023337
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78
только они медленные

С точки зрения О(ххх) быстрее чем уже откомпилированная "классическая" регулярка (которая компилится в DFA) мало что может быть.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023338
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
fkthat
По-моему, таких уже нет.
Пять цифр в (локальном) номере - норма для маленьких населённых пунктов.
А маленьких населённых пунктов - много.

Вместе с кодом города все равно будет ровно 10 цифр. Т.ч. тут еще вопрос выбора города, в случае если всего цифр (без кода страны или восьмерки) не 10.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023345
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вместо минусов могут быть пробел, а то и не один.
Кроме этого, пробел может быть в любом месте, например
901 12 12 12 7
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023349
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aklin
Вместо минусов

А, кстати, еще вместо минуса может быть дефис и два разных вида тире - это все четыре разных символа. И вообще, тот минус, что на клавиатуре, это вовсе даже и не минус, а дефис. :))
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023354
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
mayton
Регулярка которая проверяет email где-то была опубликована и она была размером с лист А4 текста. Это мать ево unsupportable. Или надо быть экспертом.

Для начала это вопрос формата. Если записывать регулярку в стиле brainfuck - понятно, она может быть непроста в поддержке. С другой стороны, их поддержка требуется очень редко. Но никто не мешает сделать структурированную форму записи регулярок, хоть тот же XML для любителей. Со всеми атрибутами и комментариями. А сгенерить по xml строку итогового выражения - ну совершенно не сложно.

да сами регулярки позволяют пробелы вставлять, если указан /x
можно хоть так писать:
Код: php
1.
2.
3.
$str = "1234567890";
preg_match('/123
456/x', $str, $m);


Basil A. Sidorov
fkthat
По-моему, таких уже нет.
Пять цифр в (локальном) номере - норма для маленьких населённых пунктов.
А маленьких населённых пунктов - много.

это всё через форму решается - она задаёт формат
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023357
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Регулярка которая проверяет email где-то была опубликована и она была размером с лист А4 текста.

это если там utf-8 учитывать (нуевонафиг)
а ascii довольно простой: /^([-a-z0-9A-Z.,:_!]{1,99}@[-a-z0-9A-Z.]{1,99}\.[a-z0-9A-Z]{2,15})$/
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023358
vi0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я не знаю Python и не использую vs code.

Я просто проверил в repl реакцию python на эскейпинг в конце.

И все что я писал - не имеет отношения к verbose.
ну регулярки питона дают вербос, зачем искать что то другое
там же в коробке с вербосом и комментирование - выше см скрин документации
я тоже питон не знаю, просто изучаю регулярки, надо было на чем то изучать, я на питоне изучаю
точне, выбрал питон для обработки текстов регулярками
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023359
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78
mayton
Регулярка которая проверяет email где-то была опубликована и она была размером с лист А4 текста.

это если там utf-8 учитывать
а ascii довольно простой: /^([-a-z0-9A-Z.,:_!]{1,99}@[-a-z0-9A-Z.]{1,99}\.[a-z0-9A-Z]{2,15})$/

Вовсе нет. Просто формат типа "fkthat@fake.io", к которому все привыкли, это только один из стапятисот разновидностей и вариаций.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023360
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
tip78
только они медленные

С точки зрения О(ххх) быстрее чем уже откомпилированная "классическая" регулярка (которая компилится в DFA) мало что может быть.

std::regex с этим поспорит )
но даже если это boost::regex, ему всё ещё надо искать текст
если вместо регулярки можно обойтись одним str.substr(), то должно быть быстрее
а потом, опять же, PVS-studio...
у него есть статья, как регулярки невозможно юзать в его продукте, потому что жёстко сосут
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023361
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
tip78
пропущено...

это если там utf-8 учитывать
а ascii довольно простой: /^([-a-z0-9A-Z.,:_!]{1,99}@[-a-z0-9A-Z.]{1,99}\.[a-z0-9A-Z]{2,15})$/

Вовсе нет. Просто формат типа "fkthat@fake.io", к которому все привыкли, это только один из стапятисот разновидностей и вариаций.

ну и какую из этих вариаций не поймает моя регулярка?
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023365
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78
это если там utf-8 учитывать (нуевонафиг)
а ascii довольно простой: /^([-a-z0-9A-Z.,:_!]{1,99}@[-a-z0-9A-Z.]{1,99}\.[a-z0-9A-Z]{2,15})$/

За регулярки, проверяющие емейл, нужно убивать. В том числе за эту. Как и вообще за верификацию емейла.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023373
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что-то новенькое...
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023378
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78
ну и какую из этих вариаций не поймает моя регулярка?

Можешь проверить на этом:
https://en.wikipedia.org/wiki/Email_address#Examples

Я уже даже не говорю про форматы типа "foo!bar!baz!fkthat" (хоть и устаревший, но, как ни странно, вполне валидный с т.з. стандартов e-mail).
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023382
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Dima T
есть еще маленькие города с пятизначными номерами

По-моему, таких уже нет. У нас, например, еще при царе горохе четвертую цифру кода города превратили в первую цифру номера. Я уверен, что это делается какой-нибудь простейшей перенастройкой АТС.

Полно пятизначных, вот например Воркута http://воркута.рф/contact/
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023387
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer

За регулярки, проверяющие емейл, нужно убивать. В том числе за эту. Как и вообще за верификацию емейла.

Я уже писал выше, что единственная реальная верификация (хоть почты, хоть телефона) это отправка запроса на подтверждение. И вообще с любыми верификациями можно попасть впросак. Обидно ведь будет, допустим, потерять кастомера на стопятьсот лямов денег из-за того, что у него номер телефона алжирский, или фамилия всего из одной буквы. :))
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023408
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
tip78
ну и какую из этих вариаций не поймает моя регулярка?

Можешь проверить на этом:
https://en.wikipedia.org/wiki/Email_address#Examples

я таких пересмотрел штук 5 разных источников
всё пропустит, кроме:
admin@mailserver1
"" '' () - нефиг им делать в адресе, как и +
Я уже даже не говорю про форматы типа "foo!bar!baz!fkthat" (хоть и устаревший, но, как ни странно, вполне валидный с т.з. стандартов e-mail).
tip78
[-a-z0-9A-Z.,:_ ! ]{1,99}
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023409
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
softwarer

За регулярки, проверяющие емейл, нужно убивать. В том числе за эту. Как и вообще за верификацию емейла.

Я уже писал выше, что единственная реальная верификация (хоть почты, хоть телефона) это отправка запроса на подтверждение.

а если он неправильно написал адрес?
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023412
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78
"" '' () - нефиг им делать в адресе, как и +

Потому что ты так решил? :))
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023421
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Обидно ведь будет, допустим, потерять кастомера на стопятьсот лямов денег из-за того, что у него номер телефона алжирский, или фамилия всего из одной буквы. :))

Потерять кастомера неприятно, но обычно всё же терпимо - их много (а где мало - там дурью не маются). А вот кастомеру, когда он потратил до фига времени и сил, и не может дойти до конца из-за того, что кривая поделка какого-то кретина ругается ему на нормальный рабочий емейл...
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023434
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
tip78
"" '' () - нефиг им делать в адресе, как и +

Потому что ты так решил? :))

прикинь? Там их единицы таких. Которых ещё не обломали на других ресурсах.
а кто ещё будет решать, RFC штоль?
ну привет регулярки размером с A4
там и utf8, и домены без точек, и вообще всё что хош
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023442
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
А вот кастомеру, когда он потратил до фига времени и сил, и не может дойти до конца из-за того, что кривая поделка какого-то кретина ругается ему на нормальный рабочий емейл...

Ну так вот я о том и говорю - проверки надо делать по минимуму, да и вообще формы сами тоже. Для меня идеальная регистрация (если не используем сторонний Open ID) это ввести просто свой е-мейл. И все. Пароль потом сгенерить и на этот мейл выслать. Не понравится пользователю пароль - сам потом в профиле поменяет. А то регулярно куда-нибудь заходишь, а там чтобы зарегаться нужно 84 обязательных поля на шести пошаговых страницах заполнять
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023455
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Вместе с кодом города все равно будет ровно 10 цифр.
Находясь в населённом пункте далеко не всегда можно набрать полный номер из десяти цифр вместо местного.
Именно поэтому и существует запись:
Код: plaintext
 +страна (поселение) номер
С пробелами - для лучшей читабельности.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023468
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
tip78
только они медленные

С точки зрения О(ххх) быстрее чем уже откомпилированная "классическая" регулярка (которая компилится в DFA) мало что может быть.

Плодить левые сущности с выделением памяти под них это быстрее чем пройтись по массиву символов конечным автоматом?
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023471
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Плодить левые сущности с выделением памяти под них это быстрее чем пройтись по массиву символов конечным автоматом?

Регулярка это как бы и есть конечный автомат.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023506
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
перебор ячеек памяти подряд - это самое быстрое, что вообще существует
ничего быстрее не было, нет и на таких процессорах уже не будет.
а вот регулярки на О(1) не тянут.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023507
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78
перебор ячеек памяти подряд - это самое быстрое, что вообще существует
ничего быстрее не было, нет и на таких процессорах уже не будет.
а вот регулярки на О(1) не тянут.

С каких пор перебор ячеек памяти стал O(1)?
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023535
Ы2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Basil A. Sidorov
пропущено...
Пять цифр в (локальном) номере - норма для маленьких населённых пунктов.
А маленьких населённых пунктов - много.

Вместе с кодом города все равно будет ровно 10 цифр. Т.ч. тут еще вопрос выбора города, в случае если всего цифр (без кода страны или восьмерки) не 10.

Стран в мире несколько больше десяти, т.е. у большинства стран двух- и трехзначные коды, напр., у Польши (48), Украины (380) и др. Т.е. цифр может быть до 12 при записи в международном формате.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023546
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ы2
Т.е. цифр может быть до 12 при записи в международном формате.

До 15. "Вместе с кодом города (или оператора) 10" это я подразумевал РФ.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023560
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
tip78
перебор ячеек памяти подряд - это самое быстрое, что вообще существует
ничего быстрее не было, нет и на таких процессорах уже не будет.
а вот регулярки на О(1) не тянут.

С каких пор перебор ячеек памяти стал O(1)?

тестировал?
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023561
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
первое, что нужно сделать, это убрать все ненужные символы, типа пробелов, скороб и прочей фигни и оставить только цифры, а потом уже отталкивать от них, как по мне, номер стоит парсить с конца в начало, так как номер 2-50-12 в каком-нибудь Зажопнски вполне нормальное явление
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023563
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ничего, скоро всем на лбу номер набьют, по нему и будем звонить
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023572
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78
тестировал?

Если ты всех научишь, как N ячеек памяти перебирать за O(1), то тебе тьюринговскую премию надо давать.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023645
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет, я про тест между регуляркой и перебором
ты же топишь за то, что скомпилированная регулярка быстрее всех
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023650
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
линейный последовательный перебор массива - это самая кеш-дружественная фишка
она и O(1) может задвинуть в некоторых случаях (например, бинарные деревья на базе heap имеют много кеш-мисс)
а вот у регекспов много нюансов
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023653
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78
скомпилированная регулярка быстрее всех

Я такого нигде не говорил. Это как раз ты сморозил ересь про перебор ячеек за константное время.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023716
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,

вы не совсем правы, к примеру, у меня есть массив на 100 ячеек памяти, размер массив константный.
с точки зрения оптимизации сумму этого массив я буду получать за константное время O(1), а не за линейное O(n), так как размер моего массив постоянные (константный).
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023727
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
tip78
скомпилированная регулярка быстрее всех

Я такого нигде не говорил. Это как раз ты сморозил ересь про перебор ячеек за константное время.

пфф
fkthat
tip78
только они медленные

С точки зрения О(ххх) быстрее чем уже откомпилированная "классическая" регулярка (которая компилится в DFA) мало что может быть .
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023735
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes
у меня есть массив на 100 ячеек памяти, размер массив константный.

Задача о рюкзаке с константным числом предметов тоже, как бы, решается за константное время.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023738
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рюкзак - это семейство задач с разными условиями наполнения. Поэтому я-бы уточнил.

И по поводу константного времени - тоже надо уточнить.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023741
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes
у меня есть массив на 100 ячеек памяти, размер массив константный.
Т.е. вы не очень понимаете смысл термина "асимптотика" в O-нотации?
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023758
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78
пфф

Ты действительно не различаешь разную разницу между "мало что может быть" и "быть вообще не может"?
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023759
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
tip78
пфф

Ты действительно не различаешь разную разницу между "мало что может быть" и "быть вообще не может"?

в некоторых случаях её вообще нет
а учитывая, что это лишь твои "фантазии на тему", тут можно и не придираться к словам
для меня оба варианта одинаковая ересь.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023760
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Roman Mejtes
у меня есть массив на 100 ячеек памяти, размер массив константный.
Т.е. вы не очень понимаете смысл термина "асимптотика" в O-нотации?

кстати, можно и подискутировать
авторЭта форма записи используется для объяснения того, как некий алгоритм ведет себя при определенном количестве элементов, над которыми совершается операция.
Это показывает нам, насколько быстро исполняется команда в зависимости от числа элементов в структуре данных, с которой мы работаем.
скомпилированный регексп всё равно зависит от входной строки
она же не индексированная, значит никаких O(1) там никогда не будет
log(N) тоже нет, там должен быть такой же последовательный перебор
или я что-то не знаю?
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023764
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78
кстати, можно и подискутировать
"Хороший архитектор предложит клиенту несколько вариантов плитки для ванной, но не станет обсуждать расположение слива. Слив должен быть возле унитаза и здесь нет предмета для обсуждения" (ц) Джоэль Спольски.
Определение не может быть предметом дискуссии - оно или принимается или отвергается. O-нотация определяет асимптотическое поведение алгоритма.
O(1) вообще не имеет физического смысла по той простой причине, что доступ к ячейке даже к статической памяти требует ненулевого времени.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023784
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78
там должен быть такой же последовательный перебор

Там конечный автомат, т.е. O(N). Быстрый поиск подстроки в строке тоже можно делать через DFA (напр. алгоритм Ахо-Корасик), впрочем и другие нормальные алгоритмы поиска подстроки тоже линейной сложности. Что в каком-то конкретном сценарии будет быстрее зависит от входных данных и прочих условий.
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40023797
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какой бы там поиск не был, это же всё равно будет перебор ячеек памяти, разве нет?
ничего же другого там в принципе быть не может
так вот, последовательный перебор кэшированной памяти - самое быстрое, что у нас есть.
А вот регексп - это уже алгоритм. Хотя, скорее всего, там в итоге тоже будет что-то сродни простого сравнения.
Так я это вижу
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40025017
vi0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78
да сами регулярки позволяют пробелы вставлять, если указан /x
можно хоть так писать:
Код: php
1.
2.
3.
$str = "1234567890";
preg_match('/123
456/x', $str, $m);

да, сам Фридл рекомендует
...
Рейтинг: 0 / 0
Форматирование номера телефона регулярками на питоне
    #40025657
vi0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
оказывается Фридл сам приложил к этому руку
ну тут грех не похвалить
...
Рейтинг: 0 / 0
98 сообщений из 98, показаны все 4 страниц
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Форматирование номера телефона регулярками на питоне
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]