首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从regex匹配函数中获得匹配组?

如何从regex匹配函数中获得匹配组?
EN

Stack Overflow用户
提问于 2018-01-06 17:29:28
回答 1查看 49关注 0票数 0

基本上,我试图用regex获取导入模块的名称,并且我的regex是正确的。所以我在代码中使用了这个,但是我得到的是奇怪的东西,而不是模块名。我想得到的是,adsf字符串,它位于组#1中。

这是密码。

代码语言:javascript
复制
for(let js of jsFiles) {
    const codes = await fs.readFile(js, 'utf8')
    const regex = /(?:from |require\()'([^/.][^/]*?)'/g
    let arr = codes.match(regex)
    console.log("arr", arr)
  }

这是输出。

代码语言:javascript
复制
arr [ 'require(\'fs-extra\'' ]
arr [ 'require(\'fs-extra\'', 'require(\'path\'' ]
arr [ 'require(\'babel-polyfill\'',
  'require(\'child-process-promise\'',
  'require(\'fs-extra\'',
  'require(\'chalk\'',
  'require(\'ora\'',
  'require(\'querystring\'' ]
arr [ 'from \'ora\'', 'from \'fs-extra\'', 'from \'glob-promise\'' ]
arr [ 'from \'fs-extra\'' ]
arr [ 'from \'fs-extra\'' ]
arr [ 'from \'chalk\'', 'from \'ora\'' ]
arr null
arr null
arr [ 'require(\'bluebird\'', 'require(\'child_process\'' ]
arr null
arr [ 'from \'child-process-promise\'',
  'from \'chalk\'',
  'from \'ora\'' ]

我怎么才能修好它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-06 17:57:18

不要使用codes.match(regex),而是在循环中使用regex.exec(codes):然后您将获得每个组的捕获文本。

例如,一个输入:

代码语言:javascript
复制
const codes = `
    require('babel-polyfill');
    require('child-process-promise');
    require('fs-extra');
    require('chalk');
    require('ora');
    require('querystring');
`;
const regex = /(?:from |require\()'([^/.][^/]*?)'/g,
    arr = [];
let match;
while (match = regex.exec(codes)) arr.push(match[1]);
console.log("arr", arr)

注意,match[1]表示与第一个捕获组匹配的内容。match[0]将为您提供完全匹配,例如match方法(与g修饰符一起使用时)。

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

https://stackoverflow.com/questions/48129951

复制
相关文章

相似问题

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