2014-01-25 5 views
1

У меня есть строка, которая должна состоять только из алфавитно-цифровых символов. Таким образом, для проверки я имею следующий код, но он не работает для некоторых случаев.Соответствие регулярному выражению в python

p = re.compile(r'\w+') 
bool(p.match("str")) 

, но это не удается в некоторых случаях, например, когда str = "we1}" результат верен, но оно должно быть ложным, а str = ")we1" возвращает ложь, которая является правильной. Таким образом, как я могу правильно обрабатывать все эти случаи, если я хочу, чтобы моя строка состояла только из буквенно-цифровых символов.

ответ

1

Использование ^ (соответствуют начало строки) и $ (соответствуют конец строки):

>>> p = re.compile(r'^\w+$') 
>>> bool(p.match('str')) 
True 
>>> bool(p.match('str}')) 
False 

^ является необязательно, потому что re.match соответствует началу строки.

См. search() vs match().

1

Обязательно используйте стартовую линию/концевые анкеры (^ and $) также:

p = re.compile(r'^\w+$') 

Без ^ and $ ваше регулярное выражение будет соответствовать только we1 и вы будете неправильно успех вернулся обратно.

Примечание: \w будет соответствовать [A-Za-z0-9_] (альфа-числовые или подчеркивание)

+1

спасибо за решение. – prattom

Смежные вопросы