Regex 通过正则表达式从导入中获取npm包名(非相对路径)

Regex 通过正则表达式从导入中获取npm包名(非相对路径),regex,Regex,我想通过正则表达式从导入中获取npm包名,但不应获取相对路径 排除从开始的匹配。/ 我试过这个: 输出应为: import React, { useContext, useEffect } from "react"; import { View, Text, AsyncStorage, Button } from "react-native"; import { createStackNavigator } from `@react-navigation/stack`; import HomeS

我想通过正则表达式从导入中获取npm包名,但不应获取相对路径

排除从开始的匹配。/

我试过这个:

输出应为:

import React, { useContext, useEffect } from "react";
import { View, Text, AsyncStorage, Button } from "react-native";
import { createStackNavigator } from `@react-navigation/stack`;
import HomeScreen from "./src/screens/HomeScreen";
import LoginScreen from "./src/screens/login";
import CalendarScreen from "./src/screens/Calendar";
import SignUpScreen from "./src/screens/signUp";
import { scale, vs } from "react-native-size-matters";
import { createDrawerNavigator } from "@react-navigation/drawer";
import { createMaterialBottomTabNavigator } from "@react-navigation/material-bottom-tabs";
import { Icon } from "react-native-elements";
import UserContext, { UserProvider } from "./src/screens/Context/UserContext";
import { NavigationContainer } from "@react-navigation/native";
react
react-native
@react-navigation/stack
react-native-size-matters
@react-navigation/drawer
@react-navigation/material-bottom
react-native-elements
@react-navigation/native

您的正则表达式只允许从双引号匹配到下一个双引号。您需要为每个
”添加一个反勾号,也就是说,您需要使用像
[“`]
这样的字符类,并且需要排除第一个
`
后跟
/
”的情况-您可以使用*负前瞻来实现这一点

这里有一个你可以使用的表达式

(?<=from [`"])(?!\./).+?(?=["`])

(?Like?@WiktorStribiżew也应该选择@react navigation/stack,它不在您的正则表达式中处理
(?
(?:react |@react)[^`“]*
@MuhammadNuman当然,我认为第二个建议可能会更安全,一个带有捕获组和反向引用的建议。
(?<=from [`"])(?!\./).+?(?=["`])
(?<=from ([`"]))(?!\./).+?(?=\1)