确保字符串不包含任何字母,但包含带有正则表达式if语句的特定字母

时间:2019-03-07 18:49:38

标签: python regex python-2.7

每当用户输入错误的输入时,我都想返回False。为此,我需要检查输入内容并确保其中仅包含特定字母。在这种情况下,我想确保其输入仅包含“ b”,“ r”,“ g”,“ p”,“ y”或“ o”。这些字母代表我正在编程的“策划”游戏中的颜色。

问题是,我不确定如何在python 2.7中正确使用正则表达式。

如何为包含非这些特定字母的任何字符的任何字符串触发if语句?

示例:

# check for invalid letters
if re.search("^[brgpyo]", player_input_string):
    return False

5 个答案:

答案 0 :(得分:1)

import string 
letters = set(string.ascii_letters) 
chars = ['b','r','g','p','y','o']
bad_chars = letters-set(chars) 
if bad_chars in player_input_string: 
      return False

使用此处的设置可以从另一个列表中减去列表。

答案 1 :(得分:1)

在字符类之外,^表示字符串的开头;内的^表示字符类中元素的取反。例如:

import re

print(re.search("^[brgpyo]", "brgpyo"))
# <re.Match object; span=(0, 1), match='b'>
print(re.search("^[brgpyo]", "argpyo"))
# None
print(re.search("[^brgpyo]", "brgpyo"))
# None

答案 2 :(得分:0)

结果= re.search('[^ brgpyo] *',player_input_string) 如果结果:     返回False

答案 3 :(得分:0)

您不必为此使用正则表达式。

bad_chars = ['b','r','g','p','y','o']

if bad_chars in player_input_string:
     return False

答案 4 :(得分:0)

如果播放器输入字符串针对以下正则表达式进行传递,则它满足您的要求:

(?i:[brgpyo].*)

此模式不区分大小写,并且仅允许这些字母存在于输入字符串中。字母可以以任何顺序和任何频率出现。