我正在尝试注释掉脚本中的所有变量类型声明,但我多次遇到过这个问题。我想匹配一个字符串,后跟一个变量名,后跟一个字符串,然后替换确切的文本,但在第二个字符串前面加一个单引号。
例如:
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 variableName
和As Boolean
。
对于 Notepad++ 中的替换字段,使用\1'\2
;这将用第一个捕获组替换匹配的文本,然后用'
,接着用第二个捕获组替换。
执行替换,并Dim variableName As Boolean
变成Dim variableName 'As Boolean
(等等)。
答案2
这可以通过后向和前向查找来完成。例如:查找:
(?<=Dim)(.*?)(?=As)
用。。。来代替:
\1'
这应该可以完成您想要做的事情。替换中的“\1”匹配“Dim”和“As”之间的文本,允许您添加注释。
编辑
附注:我测试后发现,这只适用于“全部替换”