我想检查一个字符串(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
的琐碎解决方案(这带来了我在程序中不需要的大量计算)。
有没有办法在这里使用自定义变量或通配符?
答案 0 :(得分:3)
您可以使用正则表达式来获取您要查找的值:
_([YRGB]\d)(?!\d)
在这里,_
会找到一个下划线,然后([YRGB]\d)
将匹配并捕获来自[YRGB]
字符类的字母Y
,R
,{ {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