VBS RegExp错误 - 从行的开头拉取文本

时间:2013-01-30 18:41:03

标签: regex vbscript

我需要从字符串中拉出前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

2 个答案:

答案 0 :(得分:2)

我认为strOut = match.SubMatches(0)应该是strOut = match.Value因为您没有捕获任何子匹配,因为您没有使用括号来捕获任何内容。

如果您只想将字符匹配到第一个空格,您可以使用

 re_Name.Pattern = "^\S+"

\S匹配任何非空格字符。

答案 1 :(得分:1)

你的Regexp缺少capture()来使Submatches成为可能。在太空中使用Split可能风险较小。