正则表达式,用于匹配JS导入语句

时间:2018-08-29 21:55:55

标签: javascript node.js regex

我正在使用node读取文件的内容。我需要匹配一个特定的import语句,其中文件看起来像这样。

我只需要匹配包含“ foo-bar”包的一行。我有兴趣从该软件包中获取导入。

import React, { Component } from 'react'
import { withRouter } from 'react-router-dom'
import { connect } from 'react-redux'
import { foo, bar, fooBar } from 'foo-bar'
import { anotherThing } from 'another-module'

它也可以像这样跨越多行。

import React, { Component } from 'react'
import { withRouter } from 'react-router-dom'
import { connect } from 'react-redux'
import { 
    foo, 
    bar, 
    fooBar 
} from 'foo-bar'
import { anotherThing } from 'another-module'

我尝试使用此正则表达式,但它匹配从“ import”到包含foo-bar的行的所有行。我只想将导入匹配到以“ foo-bar”结尾的行的末尾。使用JavaScript正则表达式可以吗?另外,如果除了使用正则表达式之外还有其他更好的方法,我也欢迎其他选择

import([\s\S]*?)(?=foo-bar').*

单行示例: https://regex101.com/r/U1j2G6/1

多行示例: https://regex101.com/r/kcA7gd/1

1 个答案:

答案 0 :(得分:0)

我使用一个否定的捕获组来解决您遇到的问题-该捕获组将匹配尽可能多的字符,最多匹配}

这是正则表达式。

import {[^}]*}.*'foo-bar'

Try it online!