Подбирайте только определенные специальные символы, используя регулярные выражения - PullRequest
1 голос
/ 22 марта 2019

У меня есть приведенный ниже код для ввода не менее 3 символов, он должен содержать только [a-zA-Z0-9] , _ , - , . (Точка) Но шаблон не должен совпадать только с .

Подобные входные данные могут быть --__ abc и ---- , ____ но не может быть * ... **

У меня есть схема ниже, но не работает должным образом.Может ли кто-нибудь помочь мне

     n = input()
     pattern = "^[A-Za-z0-9_-]+[.]*$"
     if match:
         print('input accepted') # exp : ----,____,aaa,000, __ahs-- 
                                    -,_.as
     else:
         print('input not accepted') # exp : .... (not accepted as  
                                       contains only dot(.) 

1 Ответ

1 голос
/ 22 марта 2019

Вы можете исправить текущий подход, заменив вторую и третью строки в приведенном выше коде на:

if re.search(r'^(?!\.+$)[A-Za-z0-9._-]{2,}$', n.strip()):

n.strip() удалит все лишние пробелы из ввода, и шаблон будет соответствовать

  • ^ - начало строки
  • (?!\.+$) - не допускается строка, содержащая только точки
  • [A-Za-z0-9._-]{2,} - две или более буквы, цифры, ., _ или -
  • $ - конец строки.

См. Демонстрационную версию regex .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...