如何在VBA字符串中找到字母和数字的组合?

时间:2017-02-13 08:09:45

标签: regex string vba

我想检查一个字符串(InStr?)是否可以找到单个字母和数字的组合。特别是这封信只能是:

" R"或" B"或" G"或" Y"

虽然数字可以从1到9。

Examples given:

R1 is legal
Y6 is legal
A2 is not legal
G10 is not legal

在此字符串中,只能找到此组合的一个实例,并且它由下划线标记" _"在开始。也可能发生这种组合无处可寻。

我想避免一系列Or或一段非常长的Select Case的琐碎解决方案(这带来了我在程序中不需要的大量计算)。

有没有办法在这里使用自定义变量或通配符?

2 个答案:

答案 0 :(得分:3)

您可以使用正则表达式来获取您要查找的值:

_([YRGB]\d)(?!\d)

在这里,_会找到一个下划线,然后([YRGB]\d)将匹配并捕获来自[YRGB]字符类的字母YR,{ {1}}或G)以及未跟随其他数字的任何数字(B\d是一个负面预测,如果有一个数字,则会使比赛失败当前位置的权利。)

或者使用单词边界((?!\d),在结尾处需要字母/数字以外的字符或\b之后的字符:

_

请参阅regex demo。结果是子串被捕获到组1中。

示例VBA代码:

_([YRGB]\d)\b

答案 1 :(得分:0)

您可以尝试使用 VBA Like 运算符:

Sub PatternMatching
    If (("G6" Like "[YRGB][1-9]") = True) Then
        Msgbox("this is a match")
    End If
End Sub