powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Форматирование номера телефона регулярками на питоне
25 сообщений из 98, страница 2 из 4
Форматирование номера телефона регулярками на питоне
    #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
25 сообщений из 98, страница 2 из 4
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Форматирование номера телефона регулярками на питоне
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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