Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
2 / 2 / 0
Регистрация: 29.02.2016
Сообщений: 212

Шаблон в regex для имени

10.06.2023, 17:28. Показов 613. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!

Помогите разобраться, пожалуйста. Я пытаюсь составить regex для шаблона и не могу допетрить как сделать.

Суть - вводимая строка должна начинаться с буквы и заканчиваться на букву, между буквами может быть символ "`" или "-" и строка должна быть не меньше 2ух символов.

Можно:
а-b, a`b, aa-b, aa`b и пр

Нельзя:
-ab, ab-, `ab, ab`, a-, a` и пр.

Пока я допетрил до самого простого: ^[a-zA-Z]{2,}, но не могу понять как сюда вписать свои условия.

Буду рад любой помощи.

Добавлено через 14 минут
Ну и ` и - не могут стоять вместе.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.06.2023, 17:28
Ответы с готовыми решениями:

Составить шаблон для RegEx
Помогите создать шаблон, чтобы пример такого вида 23-63/4 регекс вернул, каждый элемент, то есть mas23 mas- mas63 mass/ mas4 ...

Regex-шаблон для поля имя-фамилия
1) Имя должно быть написано с большой буквы 2) Фамилия должна быть написана с большой буквы 3) Поддержка двойных фамилий (Петр...

RegEx: подойдет ли приведенный шаблон для всех положительных целых и десятичных чисел
ребят, помогите пожалуйста разобраться с regex что используется в C#, конкретно: regex r = new...

13
Любознательный
 Аватар для YuS_2
7406 / 2256 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
10.06.2023, 17:39
Лучший ответ Сообщение было отмечено Breathe of fate как решение

Решение

Цитата Сообщение от Breathe of fate Посмотреть сообщение
не могу понять как сюда вписать свои условия.
Code
1
'^[a-zA-Z][-`a-zA-Z]*[a-zA-Z]$'
или если символ '-|`' должен быть только один:
Code
1
'^[a-zA-Z]+[-`]?[a-zA-Z]+$'
2
2 / 2 / 0
Регистрация: 29.02.2016
Сообщений: 212
10.06.2023, 18:04  [ТС]
оно. спасибо.

сможете подсказать, почему в данном случае "+" заменяет собой количество совпадений {}? Не очень понял.

Добавлено через 12 минут
И как можно сюда внести пробел, чтобы "ab-ab ab" было действительным?
0
Любознательный
 Аватар для YuS_2
7406 / 2256 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
10.06.2023, 20:06
Цитата Сообщение от Breathe of fate Посмотреть сообщение
почему в данном случае "+" заменяет собой количество совпадений {}? Не очень понял.
+, это один или более символов, эквивалент {1,}

Цитата Сообщение от Breathe of fate Посмотреть сообщение
И как можно сюда внести пробел, чтобы "ab-ab ab" было действительным?
Тут есть встречный вопрос: а сколько дефисов и пробелов допустимо?
0
2 / 2 / 0
Регистрация: 29.02.2016
Сообщений: 212
10.06.2023, 21:38  [ТС]
YuS_2,
неважно сколько, главное, чтобы дефис и апостроф не были в начале или в конце строки.

Например, "ab-ab ab" допускается, при это может быть "ab", "a-b", "a b". То есть условия все как в первом сообщении, только ещё пробел добавляется Для того, чтобы сложные имена, типа "Жанна Д`арк де Ля Фуэрте" проходили, а формат "Жанна Д.Арк Де Ля Фуерте" - нет.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
11.06.2023, 08:43
Лучший ответ Сообщение было отмечено Breathe of fate как решение

Решение

'(?i)^[a-z][-` a-z]*[a-z]$'
2
2 / 2 / 0
Регистрация: 29.02.2016
Сообщений: 212
11.06.2023, 13:22  [ТС]
iSmokeJC,

работает Спасибо. Могу я Вас попросить объяснить смысл "(?i)" этого? К сожалению, про группировку () я не нашёл ничего конкретного в своём курсе.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
11.06.2023, 13:28
Это не группировка. Это сокращенное указание флага re.IGNORECASE
Т.е. игнорировать регистр
0
2 / 2 / 0
Регистрация: 29.02.2016
Сообщений: 212
11.06.2023, 14:14  [ТС]
iSmokeJC, а "?i" - ноль или сколько угодно?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
11.06.2023, 14:24
Епт.
Цитата Сообщение от iSmokeJC
Это сокращенное указание флага re.IGNORECASE
0
Любознательный
 Аватар для YuS_2
7406 / 2256 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
11.06.2023, 14:43
Цитата Сообщение от iSmokeJC Посмотреть сообщение
[-` a-z]*
тут, всё же, есть дополнение:
Цитата Сообщение от Breathe of fate Посмотреть сообщение
Ну и ` и - не могут стоять вместе.
...
Цитата Сообщение от Breathe of fate Посмотреть сообщение
неважно сколько, главное, чтобы дефис и апостроф не были в начале или в конце строки.
Это-то несложно, а вот, чтобы выполнить условие (`|-), будет чуть сложнее... в общем, надо быть уверенным в том, что именно необходимо найти, т.е. условия необходимо прежде обдумать и составить наиболее полные.
Что-то типа:
'(?i)^[a-zа-яё](?:[- a-zа-яё]*|[` a-zа-яё]*)[a-zа-яё]$'

Добавлено через 10 минут
Цитата Сообщение от Breathe of fate Посмотреть сообщение
ноль или сколько угодно?
в данном случае, это не квантификаторы, а так называемые модификаторы, которые воздействуют на работу конкретного шаблона. В разных реализациях могут работать неодинаково, но в принципе работы отличий нет, т.е. например, может работать с момента вхождения и до конца шаблона (либо до следующего модификатора), либо сразу целиком на всё выражение, независимо от места вхождения...
2
2 / 2 / 0
Регистрация: 29.02.2016
Сообщений: 212
25.06.2023, 01:43  [ТС]
YuS_2,
приветствую

а как в этом паттерне можно указать, что "nam-'e" - это неправильный?
То есть если есть - и ' в одном слове, то между ними должна быть как минимум одна буква, чтобы быть правильным.
0
Любознательный
 Аватар для YuS_2
7406 / 2256 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
25.06.2023, 10:37
Лучший ответ Сообщение было отмечено Breathe of fate как решение

Решение

Цитата Сообщение от Breathe of fate Посмотреть сообщение
как в этом паттерне можно указать, что "nam-'e" - это неправильный?
В каком, в этом?
Давайте так, соберем в кучу, все условия:
1. Условия из сообщения #1
2. Условия из сообщения #3
3. Условия из сообщения #5
4. Условия из сообщения #12
Получим, что-то типа:
(?i)^[a-zа-яё][a-zа-яё ]*(?:(`|-)(?![`-])[a-zа-яё ]*)*[a-zа-яё]$

А вообще, можете потренироваться в составлении регулярок здесь.
1
2 / 2 / 0
Регистрация: 29.02.2016
Сообщений: 212
25.06.2023, 21:05  [ТС]
YuS_2,
тогда тут имя "O'Connor" не проходит...

Добавлено через 24 минуты
А, понял. Кажется, всё окей) Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.06.2023, 21:05
Помогаю со студенческими работами здесь

Переход на шаблон при регистрации, и добавление имени пользователя после имени домена
доброго дня вам у меня такая задача мне нужно чтобы при регистрации в форме на моем сайте предположим mysite.com у пользователя...

Не работает шаблон Regex
Здравствуйте. Помогите исправить шаблон. Второй день мучаюсь, не могу составить правильный шаблон. Дается код страницы. Нужно спарсить-...

Regex - Поиск имени в строке
Привет, с Новым годом! :) В большом тексте (страница форума) есть фразы: Посл. сообщение: Имя Имя состоит из любых символов,...

<regex> проверка ввода имени
Здравствуйте, с английскими буквами работает нормально, но с руссками почему-то выводит Ошибку. Это проблема в самом regex? bool...

Regex без захвата имени файла
Здраствуйте ув. Гуру! Помогите построить регулярное выражение. Мне из текста , примерно такого содежания &quot;bla 'bla' bla...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru