Каково регулярное выражение для проверки, состоит ли слово только из заданных символов?
Мне нужно регулярное выражение для Python 2.7, которое проверяет, состоит ли данное слово только из букв "a", "b", "r", "e", "d". Пожалуйста помоги!
Я попробовал следующий код:
text = raw_input ('Enter Text:')
result = re.match(r'[abred]+', text)
if result:
print ('Match')
else :
print ("Doesn't Match")
Однако, например, введя "aaaq", он считается как соответствующий текст.
2 ответа
Чтобы изменить ваше регулярное выражение для работы, вам нужно использовать ^
а также $
персонажи. ^
соответствует началу строки, и $
соответствует концу строки. Так что, если вы хотите изменить свое регулярное выражение, чтобы быть ^[abred]+$
это будет соответствовать строкам, которые содержат только буквы a
, b
, r
, e
, а также d
, В отличие от текущего регулярного выражения ([abred]+
), которая будет соответствовать любой строке, в которой есть эти буквы.
Вам не нужно регулярное выражение, которое вы можете использовать str.translate
:
In [4]: s = "bearded"
In [5]: not s.translate(None,"bread")
Out[5]: True
In [6]: s = "bored"
In [7]: not s.translate(None,"bread")
Out[8]: False
Ваше регулярное выражение re.match(r'[abred]+', text)
не будет работать, потому что он соответствует любой из букв, которые появляются в строке, это не значит, что у вас есть только эти буквы.
Вы можете повторно добавить буквы и посмотреть, пуста ли строка:
if not re.sub(r'[abred]',"", text)
Или используйте поиск, игнорируя эти буквы, поэтому, если есть какая-либо строка символов, вы получите совпадение:
if not re.search("[^bread]",text):