在VScode中使用正则表达式查找/替换字符串中的字符

3

我想替换所有的实例

() => import('@/components/something/Something')

使用

() => import(/* webpackChunkName: "components--something--Something" */ '@/components/something/Something')

到目前为止,我有这个查找/替换的正则表达式:

查找:\(\) => import\('(.+?)'\)

替换:() => import(/* webpackChunkName: "$1" */ '$1')

它将被替换为:

() => import('@/components/something/Something')

使用

() => import(/* webpackChunkName: "@/components/something/Something" */ '@/components/something/Something')

我的问题是我不知道如何替换 "@" 和 "/" 字符。

我需要执行两个查找/替换查询还是可以用一个查询完成?我想完全删除 "@" 并使用 "--" 替换 "/"。

非常感谢任何帮助!

谢谢


2
无法仅通过一个查找/替换来完成。 - Casimir et Hippolyte
好知道..但我仍然想知道如何将其作为两个查找/替换操作来完成。 - vesperknight
抱歉,今晚我要看《双峰》。 - Casimir et Hippolyte
2个回答

3

使用两个查找/替换:

find: (\(\) => import\()'@/([^']*)'\)
replace: $1/* webpackChunkName: "$2" */  '@/$2')

演示

以及

find: ((?:\G(?!^)|\(\) => import\(/\*)[^/*]*)/
replace: $1--

演示


0
如果路径始终匹配@/part1/part2/part3模式,那么您可以分别对这些部分进行分组,并使用反向引用,例如:

查找:

\(\) => import\('(@/(.+?)/(.+?)/(.+?))'\)

替换:

() => import(/* webpackChunkName: "$2--$3--$4" */ '$1')

然而,如果路径部分的数量不同(这更有可能),那么你最好采用第二和第三组类似以下的查找和替换:

去掉@/

查找:

(?<=\(\) => import\(/\* webpackChunkName: ")@/

替换:


(删除)

/转换为--

查找:

(?<=\(\) => import\(/\* webpackChunkName: ")(.*?)/(.*?)(?=" \*/)

替换:

$1--$2

(您需要对每行运行此代码多次)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接