正则表达式省略花括号

时间:2014-06-10 23:11:49

标签: regex vba vbscript

目前我在VBA中的正则表达式捕获花括号中的所有内容(包括花括号):

Pattern = "\{\w*\}"

在正则表达式级别省略大括号吗?

所以{Computer1} {Computer2}

成为Computer1 计算机2

以下完整代码:

Dim RegEx As Object
Set RegEx = CreateObject("VBScript.RegExp")
With RegEx
    .Global = True
    .IgnoreCase = True
    .MultiLine = True
    .Pattern = "\{\w*\}"
End With

1 个答案:

答案 0 :(得分:2)

在支持lookbehinds的正则表达式中,你可以这样做:

(?<={)\w*(?=})

这只匹配大括号的内容。请注意,为避免返回空字符串,您可以将*更改为+

但VBscript不支持lookbehind。

相反,您可以使用括号将内容捕获到第1组:

{(\w+)}

以下是RegexBuddy生成的代码(由于我不使用VBScript而无法发表评论):

Dim myRegexp, contentOfBraces, myMatches, myMatch As Match
Dim myRegexp As RegExp
Set myRegexp = New RegExp
myRegexp.Pattern = "{(\w+)}"
Set myMatches = myRegexp.Execute(SubjectString)
If myMatches.Count >= 1 Then
    Set myMatch = myMatches(0)
    If myMatch.SubMatches.Count >= 1 Then
        contentOfBraces = myMatch.SubMatches(1-1)
    Else
        contentOfBraces = ""
    End If
Else
    contentOfBraces = ""
End If