【发布时间】:2015-09-08 16:18:31
【问题描述】:
我有这个来获取输入并将其放入列表中:
def start():
move_order=[raw_input("Enter your moves: ").split()]
我只希望允许使用字符 A、D、S、C、H(这是为了游戏>_>)。我试过使用正则表达式的东西:
if re.match('[ADSCH]+', [move_order]) is False:
print "That's not a proper move!"
return start()
...以不同的形式...
string_test=re.compile('[ADSCH]+')
if string_test.match(move_order]) is False:
print "That's not a proper move!"
return start()
Aaaa 无法让它工作。我肯定在这些代码块中做错了什么,我试图弄清楚,但它不起作用。了解我做错了什么会很好,但我的问题的解决方案会让我学到更多我想要的东西。我什至可能不需要使用 re,但在我看来,这是一种实现我想要的空间有效的方式。我认为我的直接问题是我不知道如何重新使用列表(除非(当然)训练有素的眼睛可以发现其他明显的问题)。
我会继续问,因为我可能也会把这搞砸,但我还需要确保 C 永远不会在 H 之后......但一个小小的提示是可以接受的,因为我喜欢弄清楚事情。
【问题讨论】:
-
您将列表发送到
re.match(pattern, string, flags=0),是否区分大小写?move_order中什么样的项目可以接受,单个字符(即 ['A', 'S', 'D'])? -
我想不区分大小写。理想情况下,用户会给出如下输入:AASDCHD 或 DCASADH 等(七个单个字符,唯一的规则是只能有一个 H 和一个 S 和 C 不能在 H 之后,我可能可以自己弄清楚)
标签: python regex string list python-2.7