JS正则表达式匹配零个或多个可选的以关键字开头
JS regex match zero or more optional start with key words
给定字符串 keydown.capture.once.prevent.shift.control[arrowdown,arrowup]:silent
我想匹配 shift.control[arrowdown,arrowup]:silent
如果相同 keydown.capture.once.prevent.shift[arrowdown,arrowup]:silent
那么它应该匹配 shift[arrowdown,arrowup]:silent
这里是关键词 shift | control 可选,例如:keydown.capture.once.prevent.[arrowdown,arrowup]:silent
,匹配字符串[arrowdown,arrowup]:silen
我写了下面的正则表达式,它只能捕获零个或一个关键字,但预期结果是零个或所有关键字匹配到单独的组
(shift|control)?\[(.*?)\]:silent
,如果关键字存在,我们如何捕获所有关键字?
补充说明:关键字的顺序无关紧要,例如可以是 control.shift[]:silent
您可以使用以下任何一种正则表达式解决方案:
(?:(?:shift|control)\.?)*\[([^\]]*)\]:silent
这匹配 shift
或 control` 可选地后跟一个 dit 并重复这个 non-capture 组 0 次或更多次。
(?:shift(?:\.control)?|control(?:\.shift)?)?\[([^\]]*)\]:silent
这个匹配 shift.control
或 control.shift
在 optional non-capture 组中,点后的部分在每个交替中都是可选的。
你可以试试这个:
(?:(shift|control|shift\.control|control\.shift))?(\[.*\]):silent
给定字符串 keydown.capture.once.prevent.shift.control[arrowdown,arrowup]:silent
我想匹配 shift.control[arrowdown,arrowup]:silent
如果相同 keydown.capture.once.prevent.shift[arrowdown,arrowup]:silent
那么它应该匹配 shift[arrowdown,arrowup]:silent
这里是关键词 shift | control 可选,例如:keydown.capture.once.prevent.[arrowdown,arrowup]:silent
,匹配字符串[arrowdown,arrowup]:silen
我写了下面的正则表达式,它只能捕获零个或一个关键字,但预期结果是零个或所有关键字匹配到单独的组
(shift|control)?\[(.*?)\]:silent
,如果关键字存在,我们如何捕获所有关键字?
补充说明:关键字的顺序无关紧要,例如可以是 control.shift[]:silent
您可以使用以下任何一种正则表达式解决方案:
(?:(?:shift|control)\.?)*\[([^\]]*)\]:silent
这匹配 shift
或 control` 可选地后跟一个 dit 并重复这个 non-capture 组 0 次或更多次。
(?:shift(?:\.control)?|control(?:\.shift)?)?\[([^\]]*)\]:silent
这个匹配 shift.control
或 control.shift
在 optional non-capture 组中,点后的部分在每个交替中都是可选的。
你可以试试这个:
(?:(shift|control|shift\.control|control\.shift))?(\[.*\]):silent