Использование Python re.Search () для поиска недопустимых символов - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь использовать Python re, чтобы проверить строку на что-либо, кроме цифр и тире. Таким образом, будут передаваться только такие строки: «1-2-3-4»

Проблема в том, что строка «1-0-0-0» содержит недопустимые значения. Кажется, он возвращает True независимо от того, что я на него бросаю. «asdf», «asdf%», «1-0-0-0» все возвращают значение True. Я никогда не был хорош с регулярным выражением.

Кто-нибудь может определить, что не так с моим рисунком?

def checkStringForUnallowables(test):
    # Returns False if the string passes the unallowables check
    stringCheck = re.compile('[abcdefghijklmnopqrstuvwxyz@_!#$%^&*()<>?/\|}{~:]')

    # Pass the string in search function of RE object (string_check):
    if(stringCheck.search(test) == None):
        print("String does not contain unallowables - returning False")
        return False
    else:
        print("String contains unallowables - returning True")
        return True

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

Изменение строки регулярного выражения на [^ \ d-] сработало.

0 голосов
/ 19 июня 2020

Вам просто нужно изменить условие if

import re

def checkStringForUnallowables(test):
    stringCheck = re.compile('[abcdefghijklmnopqrstuvwxyz@_!#$%^&*()<>?/\|}{~:]')

    if not stringCheck.search(test):
        print("String does not contain unallowables - returning False")
        return False
    else:
        print("String contains unallowables - returning True")
        return True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...