Python/Pygame中的正则表达式,用于识别按键

Python/Pygame中的正则表达式,用于识别按键,python,regex,pygame,Python,Regex,Pygame,我有一个简短的问题,到目前为止我还没有找到解决办法。 我正在使用Pygame开发一个小应用程序,我需要确定用户按下的键盘键是否在某个范围内,例如仅在a和F之间。为此,我使用了一个正则表达式,如果用户按字母或数字,它就可以正常工作。正则表达式之外的所有内容都将被忽略。 我的问题是,当用户按下一个非字母数字键(如空格、escape、箭头)时,当它们不在我的范围内时,它们会被正则表达式接受 以下是一个例子: import pygame, re from pygame.locals import *

我有一个简短的问题,到目前为止我还没有找到解决办法。 我正在使用Pygame开发一个小应用程序,我需要确定用户按下的键盘键是否在某个范围内,例如仅在a和F之间。为此,我使用了一个正则表达式,如果用户按字母或数字,它就可以正常工作。正则表达式之外的所有内容都将被忽略。 我的问题是,当用户按下一个非字母数字键(如空格、escape、箭头)时,当它们不在我的范围内时,它们会被正则表达式接受

以下是一个例子:

import pygame, re
from pygame.locals import *

pygame.init()

size = width, height = 800, 480
screen = pygame.display.set_mode(size)

AppExit = False

while not AppExit:

        for event in pygame.event.get():
                if event.type == pygame.KEYDOWN:
                        # check if pressed key is between A and F
                        keypressed = pygame.key.name(event.key)
                        isValidLetter = re.search('[a-f]', keypressed)
                        if isValidLetter is not None:
                                print(keypressed + " is between A and F")

        pygame.display.update()

pygame.quit()
quit()
如果您运行此代码,例如,按Escape,您将在控制台中得到一个打印“Escape在a和F之间”

我找不到如何排除这些键:(

有什么想法吗


非常感谢!

我们可以在解释器中试用

re.search('[A-Z]', 'ESCAPE')
# --> <_sre.SRE_Match object; span=(0, 1), match='E'>

因为
^
匹配字符串的开头,
$
匹配字符串的结尾。

我们可以在解释器中尝试

re.search('[A-Z]', 'ESCAPE')
# --> <_sre.SRE_Match object; span=(0, 1), match='E'>
因为
^
匹配字符串的开头,而
$
匹配字符串的结尾。

只需使用属性,而不是
pygame.key.name(event.key)

只需使用属性而不是
pygame.key.name(event.key)


非常感谢您提供的有效解决方案…我在发布邮件之前尝试了匹配表达式,但没有^and$,这就是它不起作用的原因。再次感谢您!非常感谢您提供的有效解决方案…我在发布邮件之前尝试了匹配表达式,但没有^and$,这就是它不起作用的原因。谢谢再次感谢!Skrx,谢谢,您的解决方案也可以(当然)工作,但与我的其余代码不太兼容…至少,不必重写所有内容;)再次感谢:)Skrx,谢谢,您的解决方案也可以(当然)工作,但与我的其余代码不太兼容。。。至少,不必重写所有内容;)再次感谢:)
keypressed = event.unicode