在python中,如何通过匹配原始列表中的字符串模式从字符串列表中提取子列表

P M*_*ran 2 python regex list pattern-matching sublist

如何使用匹配模式返回字符串列表的子列表.比如我有

myDict=['a', 'b', 'c', 'on_c_clicked', 'on_s_clicked', 's', 't', 'u', 'x', 'y']
Run Code Online (Sandbox Code Playgroud)

我想回来:

myOnDict=['on_c_clicked', 'on_s_clicked']
Run Code Online (Sandbox Code Playgroud)

我认为列表推导会起作用,但我对此的确切语法感到困惑.

mgi*_*son 8

import re
myOnDict = [x for x in myDict if re.match(r'on_\w_clicked',x)]
Run Code Online (Sandbox Code Playgroud)

应该这样做......


当然,对于这个简单的例子,你甚至不需要正则表达式:

myOnDict = [x for x in myDict if x.startswith('on')]
Run Code Online (Sandbox Code Playgroud)

要么:

myOnDict = [x for x in myDict if x.endswith('clicked')]
Run Code Online (Sandbox Code Playgroud)

甚至:

myOnDict = [x for x in myDict if len(x) > 1]
Run Code Online (Sandbox Code Playgroud)

最后,作为一些未经请求的建议,您可能想重新考虑您的变量名称.除了PEP8命名约定,这些是list对象,而不是dict对象.