在Python中用正则表达式匹配输入

2 投票
1 回答
3318 浏览
提问于 2025-04-17 18:57

我有一个程序,它需要用户输入“yes”,像这样:

my_input = raw_input('> ')
if my_input == 'yes':
    #etc

但是这样要求太严格了,我希望输入能符合这个规则:[yY](es)?,这样用户输入“yes”、“Yes”、“y”或者“Y”都能被接受。但我不知道在Python中怎么实现这个。

我想要的效果是这样的:

regex = some.regex.method('[yY](es)?')
my_input = raw_input('> ')
if my_input == regex:
    #etc  

提前谢谢你。

1 个回答

7

正则表达式可能有点复杂,但这里有一种方法可以实现:

import re
regex = re.compile(r'y(es)?$', flags=re.IGNORECASE)
my_input = raw_input('> ')
if regex.match(my_input):
    #etc 

这个方法可以匹配字符串 "y""yes",不管字母大小写,但对于像 "yellow""yesterday" 这样的字符串就不行了。

或者更简单一点,不用正则表达式也能达到同样的效果:

my_input = raw_input('> ')
if my_input.lower() in ('y', 'yes'):
    #etc

注意:在 Python 3 中,raw_input 已经被 替换成了 input

撰写回答