我需要从字符串中拉出前3到13个字符,从行的开头开始,到第一次遇到空格时结束。
以下代码我无法开始工作。我经常收到“无效的过程”错误。更改模式有时会使错误消失,但它永远不会导致我需要的匹配。
请帮助。
编辑:我发现这个模式“/ [^] * /”应该做我想要的(我认为),但现在当我执行代码时,我在行strOut = match.SubMatches(0)处得到一个错误。知道为什么吗? ' Set the pattern to find the data we would like to test;
re_Name.Pattern = "^xe\-1/1/1"
re_Name.IgnoreCase = True
re_Name.Multiline = True
vLines = Split(strNames, vbcrlf)
For Each strLine in vLines
Set matches = re_Name.Execute(strLine)
For Each match in matches
strOut = match.SubMatches(0)
MsgBox strOut
Next
Next
我正在寻找的例子:
xe-0/1/1
xe-0/3/2.0
ge-11/2/1
ae0
ae0.3156
上下文中的内容示例:
xe-0/0/0 up up xxxxxxxxxxJxx0/0xToxBBxxx1 x;
ae0.202 up up ;xxxxxx1;xxxxxxxxixxxxx
ge-11/3/0.0 up down Rxxxxxxx RESERVEDing
答案 0 :(得分:2)
我认为strOut = match.SubMatches(0)
应该是strOut = match.Value
因为您没有捕获任何子匹配,因为您没有使用括号来捕获任何内容。
如果您只想将字符匹配到第一个空格,您可以使用
re_Name.Pattern = "^\S+"
\S
匹配任何非空格字符。
答案 1 :(得分:1)
你的Regexp缺少capture()来使Submatches成为可能。在太空中使用Split可能风险较小。