正则表达式动态捕获特定关键字之间的单词

时间:2019-12-08 17:27:22

标签: javascript regex reactjs

我正在为React教程构建自己的语法荧光笔。目前,我正在尝试在导入时捕获变量分配和非结构化属性。

我能够像这样捕获单个变量分配...

代码:import React from 'react';

regex:/(?<=\b(import|export|default)\s)(\w+)/gm

捕获:React

但是,当尝试使用结构化属性捕获该行时,它会失败,并且我遇到了无法预料的问题。

示例

代码:import React, { useState, useEffect } from 'react';

捕获:React

我需要捕获ReactuseStateuseEffect,但不是 ,{或{{1 }}。

Regex不是我的强项,我不确定如何问这个问题以获得正确的答案。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

  (?<=\b(import|export|default)(\w|\s|\,|\{|\}|\*)*)(\w+)(?=.*from)

逐行:

 (?<=\b /*positive lookbehind*/
   (import|export|default) /* for the statements */
   (\w|\s|\,|\{|\}|\*)* /* and for all kinds of chars inbetween */
 )(\w+) /* the word */
 (?=.*from) /* positive lookahead for "from" */