VBS 正则表达式错误 - 从行首拉取文本



我需要从字符串中提取前 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匹配任何非空格字符。

您的正则表达式缺少捕获 () 以使子匹配成为可能。在空间上使用拆分可能是一种风险较小的方法。

最新更新