使用正则expression式查找并replacestring中模式的所有实例

使用Excel VBA,我试图replace一个简单模式的所有实例,看起来像这样:

{some text} 

与其他一些常量string。 所以我想find所有包含在大括号中的文本,用另一个stringreplace(用花括号)。

我使用下面的代码:

 Dim regEx As Object Set regEx = CreateObject("VBScript.RegExp") regEx.Pattern = "\{.*?\}" qtext = regEx.Replace(qtext, html_input) 

其中qtexthtml_input是一些string。 但是这仅仅取代了模式的第一个例子。

例如:

 qtext = "yadda yadda {1:NM:=12.000:0.120} omtty doom {1:NM:=6/6} loppy loop" html_input = "I am HTML" 

结果应该是:

 "yadda yadda I am HTML omtty doom I am HTML loppy loop" 

但是我得到的是:

 "yadda yadda I am HTML omtty doom {1:NM:=6/6} loppy loop" 

我错过了什么?

正如@SJR在他们的评论中所说的,你需要将正则expression式对象的Global属性设置为True 。 该属性在MSDN上描述:

Global – 一个布尔值属性,指示是否应针对string中的所有可能匹配对正则expression式进行testing。 默认情况下,Global设置为False。

所以在你的代码中变成:

 Option Explicit Sub ReplaceText() Dim regEx As Object Dim qtext As String Dim html_input As String ' set up regex Set regEx = CreateObject("VBScript.RegExp") regEx.Pattern = "\{.*?\}" regEx.Global = True '<-- set flag to true to replace all occurences of match ' input and replacement text qtext = "yadda yadda {1:NM:=12.000:0.120} omtty doom {1:NM:=6/6} loppy loop" html_input = "I am HTML" ' do replace qtext = regEx.Replace(qtext, html_input) ' test output MsgBox qtext End Sub