2013-11-18 6 views
0

У меня есть строка, которая может содержать только алфавиты, цифры, пустые места и символ ':'. Поэтому я написал следующий код:Regex negative matching with python

regex = r'![a-zA-Z0-9\:\ ]+' 
print re.match(regex, myString) 

Однако, похоже, что это не сработало. Я пробовал разные комбинации r'?!([a-zA-Z0-9\:\ ])+', а также с re.search, но он не работает. Любая помощь?

ответ

2

Если вы хотите позитивный матч (допустимые символы), а затем использовать:

r'^[a-zA-Z0-9: ]+$' 

Если вы хотите отрицательный матч (имеет ли строка недопустимые символы), то:

r'[^a-zA-Z0-9: ]+' 
+1

Для первое выражение для работы, вам нужно добавить якоря так: 'r '^ [a-zA-Z0-9:] + $''. Второе выражение должно работать нормально как есть. – ridgerunner

+0

Хорошее предложение, спасибо. Отредактировал мой ответ. –

+0

Я использую отрицательное соответствие. Он не работает, как для [допустимых, так и недействительных] строк, возвращаемых им повторно. Нет – avi