You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则表达式提取快捷键字符串中的按键?含特殊场景

正则表达式提取键盘快捷键按键的问题

我需要用正则表达式从包含键盘快捷键的字符串中提取按键,但始终写不出正确代码。以下是我的一次尝试:

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 04:35:27