0

我想从文本中提取一些东西,例如在这个文本中:

r_w + [DPTPSRMX] < psrmmn_w und B_zepsrpl

我要提取[]本例中的内容:DPTPSRMX

我在vba中写了这段代码:

Dim regklammer As New RegExp
Dim regdcm As New RegExp

Dim matchgklammer As MatchCollection
Dim matchgdcm As MatchCollection

regklammer.Pattern = "\[+\w*\]"
regklammer.Global = True

regdcm.Pattern = "\w*"
'regdcm.Global = True

Set matchgklammer = regklammer.Execute(Pruefhinweis.Value)

For K = 0 To matchgklammer.Count - 1
 MsgBox matchgklammer.Item(K)
  Set matchgdcm = regdcm.Execute(Trim(matchgklammer.Item(K)))
  MsgBox matchgdcm.Item(0)
Next K

但 matchdcm.count 是 4 并且它返回 3 个空格 + DPTPSRMX。你能告诉我,为什么我的代码会找到空格,我该如何解决这个问题?

4

2 回答 2

1

对您来说最简单的解决方案是简单地从matchgklammer.Item(K)使用普通字符串操作 ( substring) 而不是正则表达式中删除第一个和最后一个字符。你知道每场比赛的第一个和最后一个字符是[and ]

另一种方法,如果你想使用正则表达式来做到这一点,就是添加一个匹配组

regklammer.Pattern = "\[(+\w*\)]"

接着:

For K = 0 To matchgklammer.Count - 1
 MsgBox matchgklammer.item(K).groups(0)
Next K
于 2013-09-06T08:09:56.167 回答
1

正则表达式中的*字符匹配零个或多个前面的模式。尝试+使用来匹配 1 个或更多。

请参阅http://msdn.microsoft.com/en-us/library/1400241x.aspx

于 2013-09-06T08:16:15.367 回答