VS代码段中的嵌套正则表达式替换

问题描述

在重新构造文本(rst)文件中进行大量粗体读取时,我犯了一个错误在这种情况下,我应该使用不同的标题样式

我需要替换:

**some heading**

具有:

some heading
............

我想使用VS Code片段来做到这一点,在其中我突出显示有问题的文本,然后运行该片段进行替换。

为此,我认为我需要进行两次替换:

  1. 获取所选文本,删除开头和结尾的**
  2. 取1的结果,然后将所有(。)替换为文字点(。):s/././g

我不知道如何在VS Code片段中进行嵌套替换-甚至有可能吗?

这就是我现在拥有的:

    "BoldToSubheading": {
        "prefix": ["boldtosubheading"],"body": [
            "${TM_SELECTED_TEXT/\\*\\*(.*)\\*\\*/${1}/}","${TM_SELECTED_TEXT/././g}",],"description": "Change bold text into subheading."
    }

如果输入的文本是:

**foobar**

我得到四个点太多-因为最后一个替换中包含星号。

foobar
..........
代码代码似乎基于的

Textmate docs表示:

For nested replacements,use named captures as variables are inherited.

但是,我试过"${TM_SELECTED_TEXT/(?<guts>.*)/${guts}/g}"并没有运气。

是否有解决我的替换问题的建议?片段是否可以嵌套替换?

要求是:

  1. 突出显示的文本在正面和背面都将包含双星号
  2. 双星号之间的文本(我们称其为'guts')可以包含任何内容-空格,数字,引号等
  3. 结果应为“胆量”,加上换行符,再加上等于胆量长度的点数。

解决方法

我认为只用一个代码片段可能会更容易-也许有条件的替换-但我无法在合理的时间内弄清楚。但这很容易做到。

使用multi-command之类的宏扩展名,将其放入您的设置:

uploadFile($event) {
  if ($event.target.files && $event.target.files[0]) {
    const file = $event.target.files[0];
    const reader = new FileReader();
    reader.readAsDataURL(file)
    reader.onload = (e: any) => {
      this.imageSource = reader.result;
      this.openDialog(this.imageSource); // <-- should be inside the callback
    }
  }
}

和一个用于触发它的键绑定(在keybindings.json中):

"multiCommand.commands": [

  {
    "command": "multiCommand.refactorHeadings","interval": 250,// remove this line and will be instantaneous
    "sequence": [

      {
        "command": "editor.action.insertSnippet","args": {
          "snippet": "${TM_SELECTED_TEXT/\\*\\*(.*)\\*\\*/$1/}",}
      },"editor.action.copyLinesDownAction","cursorLineStartSelect",{
        "command": "editor.action.insertSnippet","args": {
          "snippet": "${TM_SELECTED_TEXT/././g}",}
      } 
    ]
  }
],

refactor headings with a macro

该演示显示选择所有这样的简单查找正则表达式, Ctrl + Shift + L 将执行此操作,并触发宏。出于演示目的,显示速度有所降低。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...