我想从文本中提取一些内容,例如在本文中:
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
。你能不能请我说,为什么我的代码会找到空白区域,我该如何解决这个问题呢?
答案 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