正则表达式返回空结果

时间:2013-09-06 07:46:51

标签: regex vba access-vba ms-access-2010

我想从文本中提取一些内容,例如在本文中:

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。你能不能请我说,为什么我的代码会找到空白区域,我该如何解决这个问题呢?

1 个答案:

答案 0 :(得分:1)

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

另一种方法是,如果你想使用正则表达式来做,就是添加matching group

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

然后:

For K = 0 To matchgklammer.Count - 1
 MsgBox matchgklammer.item(K).groups(0)
Next K