首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用RegEx从names命令获取应用程序名称?

如何使用RegEx从names命令获取应用程序名称?
EN

Stack Overflow用户
提问于 2018-10-07 10:57:15
回答 4查看 134关注 0票数 2

我有一根绳子:

代码语言:javascript
复制
npm install lodash hapi thinky when  

我有这样的判决:

代码语言:javascript
复制
npm install ([\w\.\-]+)@?([0-9_\.\-\^]*)

但是它只返回第一个应用程序名lodash。因此,我可以使用哪个regex来获得lodash, hapi, thinky, when

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-10-07 11:22:21

您可以使用这个regex:

代码语言:javascript
复制
npm install ((?:(?:[\w\.\-]+)@?(?:[0-9_\.\-\^]*)\s*)+)

这基本上是将npm install后的整个过程捕获为第1组。然后您可以通过\s+将其拆分。

代码语言:javascript
复制
var regex = /npm install ((?:(?:[\w\.\-]+)@?(?:[0-9_\.\-\^]*)\s*)+)/g;
var match = regex.exec("npm install lodash hapi thinky when");
var group1 = match[1];
console.log(group1.split(/\s+/));

票数 1
EN

Stack Overflow用户

发布于 2018-10-07 11:56:42

您可以从字符串的开头匹配npm install,然后使用交替在组中捕获一个单词字符一次或多次。

^npm install|(\w+)

Regex演示

如果要匹配的字符不止一个单词,可以使用字符类并添加要匹配的字符,例如([\w.-]+)

代码语言:javascript
复制
const regex = /^npm install|(\w+)/g;
const str = `npm install lodash hapi thinky when`;
let m;
let result = [];
while ((m = regex.exec(str)) !== null) {
  if (m.index === regex.lastIndex) {
    regex.lastIndex++;
  }
  if (m[1]) {
    result.push(m[1]);
  }
}
console.log(result);

票数 0
EN

Stack Overflow用户

发布于 2018-10-07 12:13:54

我不会在这里用正则表达式。您可以这样做一些简单的事情:

代码语言:javascript
复制
const input = "npm install lodash hapi thinky when";
const output = input.slice(11).trim().split(/\s+/);
console.log(output);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52687808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档