繁体   English   中英

VScode在匹配前后替换正则表达式

[英]VScode replace regex before and after a match

我正在尝试搜索并替换某个字符串。

让我们说:

this.$store.getters.xyz

并使它:

this.$store.getters['xyz']

一个问题是字符串可能以空格,分号或换行符结尾。

对我来说,似乎我必须在最后有一个空组来替换。

我目前的尝试:

(getters\.)((?<=getters.)[A-z]*$)

你的意思是这样的吗?

 function replaceGetter(str) { return str.replace(/getters\\.\\w+/igm, function (str) { return "getters['" + str.substr('getters.'.length, str.length) + "']"; }); } //TEST var input = document.body.appendChild(document.createElement("input")); var output = document.body.appendChild(document.createElement("p")); function update() { output.innerHTML = replaceGetter(input.value); } input.addEventListener('change', update); input.addEventListener('keyup', update); 

找:

this\.\$store\.getters\.([^\s;]+)(.*)$

更换:

this.$store.getters['$1']$2

例:

在此输入图像描述

采用

找到什么\\b(this\\.\\$store\\.getters)\\.(\\w+)
或者, \\b(this\\.\\$store\\.getters)\\.(\\w+)(?=[\\s;]|$)
替换为$1['$2']

在此输入图像描述

细节

  • \\b - 单词边界
  • (this\\.\\$store\\.getters) - 第1组( $1 ): this.$store.getters字符串
  • \\. - 一个点
  • (\\w+) - 第2组( $2 ):一个或多个字母,数字或_
  • (?=[\\s;]|$) -的下一个字符必须是一个空白( \\s ), ; 或者一行( $ )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM