首页 > 解决方案 > 从 JavaScript REGEX 获取分组数组

问题描述

我目前正在为我正在为我的 Discord 机器人编写的字符串比较程序生成一个正则表达式语句。我正在使用以下生成的正则表达式字符串:

let regex = new RegExp("(TRIGGER WORD) (.*?)", "g");

然后我使用以下命令执行它:

let returns = regex.exec("TRIGGER WORD WHAT");

我得到以下信息:

 [ 'stud, ', 'stud,', '', index: 0, input: 'stud, what' ]

没有迹象表明我最重要的是要获得的“什么”分组。

从 PHP 的背景来看,我希望我会得到一个数组,如下所示:

 ['TRIGGER WORD', 'WHAT']

标签: javascriptnode.jsregex

解决方案


在您的正则表达式中,最后一部分(.*?)是惰性的,并且会尽可能少地重复点。

对于您的示例数据,您可以匹配第二组greedy (.*)中的量词。您的结果在捕获组 1 和 2 中。

这将TRIGGER WORD在第一组中匹配,一个空格和第二组中的后续内容。

let regex = new RegExp("(TRIGGER WORD) (.*)", "g");
let returns = regex.exec("TRIGGER WORD WHAT");
console.log(returns);
console.log(returns[1]);
console.log(returns[2]);


推荐阅读