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