如何用正则表达式提取快捷键字符串中的按键?含特殊场景
正则表达式提取键盘快捷键按键的问题
我需要用正则表达式从包含键盘快捷键的字符串中提取按键,但始终写不出正确代码。以下是我的一次尝试:
import re regex = r"(.*?)\+((.*?)\+)*(.*$)" print( re.findall(regex, 'Alt+Super+Right'), re.findall(regex, 'Alt+Super+='), re.findall(regex, 'Shift+Super++'), sep='\n')
预期输出:
['Alt','Super','Right'] ['Alt','Super','='] ['Shift','Super','+']
实际输出:
[('Alt', 'Super+', 'Super', 'Right')] [('Alt', 'Super+', 'Super', '=')] [('Shift', '+', '', '')]
我完全不清楚为何失效,尤其是最后一种情况,恳请指点方向。
补充特殊场景问题
针对已有答案中的正则表达式,我发现它无法覆盖以下特殊场景(这类快捷键格式出现在Linux Mint Cinnamon的键盘设置对话框中,推测单独的+通常在末尾,但格式允许其出现在中间;数据库文本 dump 中会用另一种表示,比如<Primary><Super>Left代表左Windows键加方向键,Shift+Super++会显示为<Shift><Super>plus):
import re regex = r"([^+]+|.+)\+?" print( re.findall(regex, '++Super+Alt'), re.findall(regex, 'Super+++Alt'), sep='\n' )
实际输出:
['++Super+Alt'] ['Super', '++Alt']
预期输出:
['+', 'Super', 'Alt'] ['Super', '+', 'Alt']
内容的提问来源于stack exchange,提问作者user7711283
相关产品推荐
相关产品推荐

