我需要从字符串中提取前 3 到 13 个字符,从行首开始,到第一次遇到空格结束。
以下代码我无法开始工作。我经常收到"无效过程"错误。更改模式有时会使错误消失,但它永远不会导致我需要的匹配。
请帮忙。
编辑:我发现这个模式"/[^ ]*/"应该做我想要的(我认为),但现在当我执行代码时,我在行strOut = match处出现错误。子匹配(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
我认为strOut = match.SubMatches(0)
应该strOut = match.Value
,因为您没有捕获任何子匹配项,因为您没有使用括号来捕获任何内容。
如果您只想将字符匹配到第一个空格,则可以使用
re_Name.Pattern = "^S+"
S
匹配任何非空格字符。
您的正则表达式缺少捕获 () 以使子匹配成为可能。在空间上使用拆分可能是一种风险较小的方法。