假设我们有以下导入语句(不是特定于语言的):
import "./test"
import "./test" as Test
import { Test } from "./test"
import { Person as Individual } from "./test"
我正在尝试编写一个正则表达式以粗体检索以下组:
导入“ ./test”
导入“ ./ test” 为测试
导入 {测试} 来自“ ./ test”
导入 {个人为,个人,测试,包为背包} 来自“ ./ test” < / p>
我尝试编写以下正则表达式:
/^(import)(?:.+?)(\s+from\s+|\s+as\s+)*(?:.+?)$/gm
https://regex101.com/r/4sO59R/1
但是这与我的预期不符...我只能得到导入 ... 我应该如何正确编写它?
答案 0 :(得分:2)
尽管理想的正则表达式很难捕获数据,但我想出的最接近的正则表达式是给定文本,
^(import)(?:.*?(as))?(?:.*?(as))?(?:.*?(from))*.*$
答案 1 :(得分:1)
这可能也可以工作,并且更容易理解。
\b((^import)|(as)|(from))\b
在这里尝试:
https://regex101.com/r/7aIudD/2
编辑:我应该补充一点,我刚刚注意到您使用的是Javascript,因此可能不支持重复捕获。这意味着您可能不得不借助手动方式搜索字符串(不难)或以某种方式拆分字符串并进行多次搜索。如果问题像您描述的那么简单,我将进行手动搜索。