首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBA regex展望未来

VBA regex展望未来
EN

Stack Overflow用户
提问于 2014-06-17 22:19:44
回答 1查看 739关注 0票数 0

enter code here--我试图识别在“a”之后可能附加到端口上的数字。

端口的格式为ge-#/#/# (可以是ge-0/0/n,其中0 <= n <=23,或ge-0/1/m,其中0 <= m <= 3)。

示例:

代码语言:javascript
复制
ge-0/0/10.2014

结果应该是“2014年”

目前,我正在使用以下RegEx来标识端口:

代码语言:javascript
复制
\bge-0/(0/([01]?[0-9]|2[0-3])|1/[0-3])\b

我的问题是为端口创建一个检查,但只打印它之后的内容。我试图简单地开始,然后抛出端口代码,结果很糟糕。如果有人能够帮助创建我正在寻找的RegEx,并解释它如何在不打印端口的情况下检查端口,他们将不胜感激。

谢谢

编辑:

只有改变模式才能解决这个问题。这是因为该模式正被放入一个txt文件中,由vba宏从中读取。无法修改vba代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-17 23:20:13

使用附加数字\.([0-9]+)的捕获子模式展开regex

代码语言:javascript
复制
Dim regEx As New VBScript_RegExp_55.RegExp
regEx.Pattern = "\bge-0/(0/([01]?[0-9]|2[0-3])|1/[0-3])\.([0-9]+)\b"

使用SubMatches检索子模式;参考索引2,因为在正则表达式中前面有两对括号。

代码语言:javascript
复制
Dim source, matches, result
Set source = "ge-0/0/10.2014"
If regEx.test(source) Then
    Set matches = regEx.Execute(source)
    Set result = matches(0).SubMatches(2)
End If
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24274242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档