使用正则表达式仅匹配特定的特殊字符

时间:2019-03-22 10:22:04

标签: python regex

我有以下代码以最少3个字符输入,它应仅包含 [a-zA-Z0-9] _ - 。(点) 但是模式不应该只匹配

类似输入可以是 --__ abc ---- ____ ,但不能是* ... ** < / p>

我具有以下模式,但无法正常工作。 有人可以帮我吗

     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 个答案:

答案 0 :(得分:1)

您可以通过使用以下代码替换上面代码中的第二行和第三行来解决当前问题:

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

n.strip()将从输入中去除所有多余的空白,并且模式将匹配

  • ^-字符串的开头
  • (?!\.+$)-不允许仅点字符串
  • [A-Za-z0-9._-]{2,}-两个或多个字母,数字,._-
  • $-字符串的结尾。

请参见regex demo