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

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

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

例如:

Dim variableName As Boolean
Dim variableName2 As String

应该变成:

Dim variableName 'As Boolean
Dim variableName2 'As String

现在,一个问题是我在代码的其他地方也有不应该被替换的“As”字符串,所以简单的查找/替换不起作用。

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

Dim.*As

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

有任何想法吗?

答案1

您可以使用 RegEx“捕获组”来指定您想要捕获和保留的部分,并替换其余部分。

(在 Notepad++ 中,捕获组用括号(和)表示),您可以将它们的内容放入“替换”中,对每个添加的捕获组使用诸如、等符号\1\2按出现顺序)表示。

因此,将搜索 RegEx 更改为(Dim.*)(As),它将像原来一样为您找到内容,但会生成两个捕获组。一个在要插入 之前',另一个在 之后。

对此将会Dim variableName As Boolean像以前一样发现,并且两个捕获组将包含Dim variableNameAs Boolean

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

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

答案2

这可以通过后向和前向查找来完成。例如:查找:

(?<=Dim)(.*?)(?=As)

用。。。来代替:

\1'

这应该可以完成您想要做的事情。替换中的“\1”匹配“Dim”和“As”之间的文本,允许您添加注释。

编辑

附注:我测试后发现,这只适用于“全部替换”

相关内容