В Python, как проверить, содержит ли строка только определенные символы?

В Python, как проверить, содержит ли строка только определенные символы?

Мне нужно проверить строку, содержащую только a..z, 0..9 и. (точка) и нет другого персонажа.

Я мог бы перебрать каждый символ и проверить, является ли символ a..z или 0..9, или. но это было бы медленно.

Мне сейчас не ясно, как это сделать с помощью регулярного выражения.

Это правильно? Можете ли вы предложить более простое регулярное выражение или более эффективный подход.

#Valid chars . a-z 0-9 
def check(test_str):
    import re
    #http://docs.python.org/library/re.html
    #re.search returns None if no position in the string matches the pattern
    #pattern to search for any character other then . a-z 0-9
    pattern = r'[^\.a-z0-9]'
    if re.search(pattern, test_str):
        #Character other then . a-z 0-9 was found
        print 'Invalid : %r' % (test_str,)
    else:
        #No character other then . a-z 0-9 was found
        print 'Valid   : %r' % (test_str,)

check(test_str='abcde.1')
check(test_str='abcde.1#')
check(test_str='ABCDE.12')
check(test_str='_-/>"!@#12345abcde>> 
Valid   : "abcde.1"
Invalid : "abcde.1#"
Invalid : "ABCDE.12"
Invalid : "_-/>"!@#12345abcde

Ответы на вопрос(6)

Ваш ответ на вопрос