正则表达式的新手,我正在尝试跳过第一组括号[word1]
,并将任何剩余的文本与括号括号[...}
文字:[word1] This is a [word2]bk{not2} sentence [word3]bk{not3}
模式:[^\]]\[.*?\}
所以我想要的是匹配[word2]bk{not2}
和[word3]bk{not3}
,它有效,但我最终会在每场比赛中占据领先位置。已经玩了几天(并且做了很多阅读),但我显然仍然缺少一些东西。
答案 0 :(得分:2)
答案 1 :(得分:1)
[^]]
与领先空间相匹配。匹配任何没有]
的字符。
例如,当文字为[word1] This is a X[word2]bk{not2}
时,
模式[^\]]\[.*?\}
匹配X[word2]bk{not2}
。
如果在[wordN}
和{notN}
之间没有显示任何左括号,您可以使用:
\[[^\[}]*}
或者,您也可以将Submatches
与捕获组一起使用。
Sub test()
Dim objRE As Object
Dim objMatch As Variant
Dim objMatches As Object
Dim strTest As String
strTest = "[word1] This is a [word2]bk{not2} sentence [word3]bk{not3}"
Set objRE = CreateObject("VBScript.RegExp")
With objRE
.Pattern = "[^\]](\[.*?\})"
.Global = True
End With
Set objMatches = objRE.Execute(strTest)
For Each objMatch In objMatches
Debug.Print objMatch.Submatches(0)
Next
Set objMatch = Nothing
Set objMatches = Nothing
Set objRE = Nothing
End Sub
在此示例代码中,pattern具有用于分组的圆括号。