检查单词是否仅由给定字符组成的正则表达式是什么?

What is the regular expression for checking if the word consists only of the given characters?

我需要 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" 它会将其视为匹配文本。

你不需要正则表达式你可以使用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) 将不起作用,因为它匹配字符串中出现的任何字母,这并不意味着您只有这些字母。

您可以 re.sub 字母并查看字符串是否为空:

if not re.sub(r'[abred]',"", text)

或者使用忽略这些字母的搜索,这样如果有任何字符栏,您将得到匹配项:

if not re.search("[^bread]",text):

为了修改您的正则表达式,您需要使用 ^$ 字符。 ^ 匹配字符串的开头,$ 匹配字符串的结尾。因此,如果您将正则表达式修改为 ^[abred]+$,它将匹配仅包含字母 abred。与当前的正则表达式 ([abred]+) 相反,它将匹配任何包含这些字母的字符串。