gpt4 book ai didi

javascript - 用于匹配 JS import 语句的正则表达式

转载 作者:太空宇宙 更新时间:2023-11-04 01:44:07 35 4
gpt4 key购买 nike

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

我只需要匹配包含“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

最佳答案

更新:正如 @jhm2k 在下面的答案中指出的,以下正则表达式存在多个问题。阅读本文的人应该检查他的答案或 the remake I did in my github .

<小时/>

我开发了这个正则表达式,它可以匹配任何可以作为有效导入语句的内容:

import([ \n\t]*(?:[^ \n\t\{\}]+[ \n\t]*,?)?(?:[ \n\t]*\{(?:[\n\t]*[^ \n\t"'\{\}]+[ \n\t]*,?)+\})?[ \n\t]*)from[\n\t]*(['"])([^'"\n]+)(?:['"])

它具有以下捕获组:

  • $1 导入变量
  • $2 用于导入的报价
  • $3导入路径

对于您的情况,您可以测试 3 美元。

请小心使用它,因为它也匹配字符串内的出现情况。另外,我不会盲目使用它,可能会有错误并且速度很慢。

我使用以下文件进行测试:

import someClass from "src"
import someClass from"src"
import
someClass
from
"src"
import someClass
from "src"

import {class1,class2} from "src"
import {
class1,
class2
} from"src"

import {
class1

} from "src"

import defaultClass ,

{
class1
}

from "src"

import defaultClass,

{
class1
}from "src"

import someClass from "src";import someClass from "src"


"I disagree about your import practices from 'src/who knows where'"
`import someClass from "src"
import someClass from"src"
import
someClass
from
"src"
import someClass
from "src"

import {class1, class2} from "src"
import {
class1,
class2
} from"src"

import {
class1

} from "src"

import defaultClass ,

{
class1
}

from "src"

import defaultClass,

{
class1
}from "src"
`

关于javascript - 用于匹配 JS import 语句的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52086611/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com