正则表达式 - 如何在匹配中找到匹配?

时间:2011-02-09 23:40:53

标签: regex vbscript

我一直在尝试使用VBs Regular Expression对象执行以下操作,但找不到一种简单的方法。有人可以提供一些建议吗?

例如,我有一个字符串“12< 56> 89”,我想在“<>”中找到字符串在这种情况下应该是“56”。我目前正在做的是尝试找到表达式“< \ d +>”这将返回< 56>。然后我尝试从第一场比赛的结果中找到表达式“\ d +”,它将返回56.

我不喜欢这种方式,因为它需要调用该函数两次。我想知道是否可以将字符串放在“<>”中只使用一个正则表达式?谢谢!

谢谢, 艾伦

2 个答案:

答案 0 :(得分:10)

使用表达式“<(\ d +)>”

然后,您可以将所有匹配作为集合进行访问。如果设置RegEx.Global = True,您的正则表达式可以匹配多次。第一个匹配在var(0)中找到,第二个匹配在var(1)。子匹配组可以在var(0).SubMatches(0)等处找到。如果你只做一次,你可以将它排成一行:

Dim RegEx : Set RegEx = New RegExp
RegEx.Pattern = "<(\d+)>"
Dim strTemp : strTemp = "12<56>89"
WScript.Echo RegEx.Execute(strTemp)(0).SubMatches(0)

在这里测试你的正则表达式: http://www.regular-expressions.info/vbscriptexample.html

答案 1 :(得分:3)

使用表达式&lt;(\ d +)&gt;。使用

执行正则表达式
Set matches = expr.Execute(text)
If matches.Count > 0 Then
    result = matches(0).Submatches(0)
End If

Submatches集合包含与表达式中的括号分组对应的字符串。