如何在正则表达式搜索中替换通配符?

DAC*_*sby 4 notepad++ regex find-and-replace

我正在尝试注释掉我拥有的脚本中的所有变量类型声明,但我还遇到过几次这个问题。我想匹配一个字符串,后跟一个变量名,后跟一个字符串并替换确切的文本,但在第二个字符串前加上一个单引号。

例如:

Dim variableName As Boolean
Dim variableName2 As String
Run Code Online (Sandbox Code Playgroud)

应该变成:

Dim variableName 'As Boolean
Dim variableName2 'As String
Run Code Online (Sandbox Code Playgroud)

现在,问题是我在代码中的其他地方也有不应替换的“As”字符串,因此简单的查找/替换不起作用。

我正在使用 NotePad++ 并具有以下与我的声明正确匹配的正则表达式:

Dim.*As
Run Code Online (Sandbox Code Playgroud)

但我不知道用什么来.*代替替换字段中的 。Dim.*'As显然用文字替换通配符字符串.*,这是不好的。

有任何想法吗?

Ƭᴇc*_*007 8

您可以使用正则表达式“捕获组”来指定要捕获和保留的部分,并替换其余部分。

在记事本++捕获基团由括号表示(()),并且可以把它们的内容变成“替换为”通过使用符号如\1\2等,为所添加的每个捕获组(按出现的顺序)。

因此,将您的搜索 RegEx 更改为(Dim.*)(As),它会像最初为您做的那样查找内容,但会生成两个捕获组。一个在您要插入的位置之前',一个在之后。

到这会Dim variableName As Boolean像以前一样找到,并且两个捕获组将包含Dim variableNameAs Boolean

对于 Notepad++ 中的替换字段,请使用\1'\2; 这将用第一个捕获组替换匹配的文本,然后是',然后是第二个捕获组。

执行您的替换,并Dim variableName As Boolean成为Dim variableName 'As Boolean(等)。