Убедиться, что строка не содержит каких-либо букв, а конкретные с регулярным выражением if - PullRequest
0 голосов
/ 07 марта 2019

Я хочу вернуть False всякий раз, когда пользователь вводит неправильный ввод.Для этого мне нужно проверить ввод и убедиться, что он содержит только определенные буквы.В этом случае я хочу убедиться, что их вход содержит только «b», «r», «g», «p», «y» или «o».Тезисные буквы представляют цвета в игре "mastermind", которую я программирую.

Проблема в том, что я не уверен, как правильно использовать регулярные выражения в python 2.7.

Как я могувызвать оператор if для любой строки, которая содержит любые символы, кроме этих конкретных букв?

Пример:

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

Ответы [ 5 ]

1 голос
/ 07 марта 2019

За пределами класса символов, ^ означает начало строки; в пределах ^ указывает на отрицание элементов в классе символов. Например:

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
1 голос
/ 07 марта 2019
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

Используйте этот набор, чтобы иметь возможность вычесть список из другого списка.

0 голосов
/ 07 марта 2019

Вам не нужно использовать регулярные выражения для этого.

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

if bad_chars in player_input_string:
     return False
0 голосов
/ 07 марта 2019

Если входная строка игрока переходит к следующему регулярному выражению, оно соответствует вашим требованиям:

(?i:[brgpyo].*)

Этот шаблон нечувствителен к регистру и позволяет только тем буквам присутствовать во входной строке. Буквы могут встречаться в любом порядке и с любой периодичностью.

0 голосов
/ 07 марта 2019

result = re.search ('[^ brgpyo] *', player_input_string) если результат: вернуть Ложь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...