首页 > 解决方案 > 正则表达式 - 匹配字符串中的标记

问题描述

我有一个代表一系列按键和释放的字符串。在此模式中,CTRL+C 将表示为:

P CTRL P C R C R CTRL

即,P 表示“按下”或“R”表示释放加上一些键名。我想要一个正则表达式,它将所有这些标记提取到一个数组中:

['P CTRL', 'P C', 'R C', 'R CTRL']

我该怎么做?

标签: javascriptregex

解决方案


如果您使用(?=[PR] \w+)匹配字符作为拆分的分隔符,您可以很容易地做到这一点。这将在命令之间拆分字符串。

这匹配一个空格后跟一个零宽度(不包括实际匹配中的字符)正向超前断言。前瞻是确保空格后跟一个 P 或一个 R,然后是一个空格,然后是一个或多个字母数字字符。

const keys = 'P CTRL P C R C R CTRL'.split(/ (?=[PR] \w+)/);
console.log(keys);
//["P CTRL", "P C", "R C", "R CTRL"]

(请注意,在撰写本文时,堆栈片段似乎已关闭。)


推荐阅读