VBA正则表达式匹配咨询:如何匹配56-...与...-28格式字符串?
VBA中匹配
56-...和...-28的正则表达式方案 一、对应需求的正则表达式
- 匹配
56-...(数字开头,后跟-...格式):^\d+-...$- 说明:
^锚定字符串开头,\d+匹配1个及以上数字,-匹配连字符,...匹配三个点,$锚定字符串结尾,确保整个字符串完全符合格式
- 说明:
- 匹配
...-28(三个点开头,后跟-加数字格式):^...-\d+$- 说明:
^锚定开头,...匹配三个点,-匹配连字符,\d+匹配1个及以上数字,$锚定结尾,确保无多余字符
- 说明:
二、你之前匹配失败的原因
你用了Target.Value Like "[\.]{3}[\-]{1}[0-9]{1,}",但VBA的Like运算符语法和正则表达式完全不兼容:
- Like里的
[]是字符集,[\.]只会匹配单个.,{3}在Like中不是重复次数语法(Like用*匹配任意多个字符、?匹配单个字符、#匹配单个数字) - 若非要用Like实现
...-28的匹配,写法应为"...-*"(匹配任意长度数字)或"...-##"(固定两位数字),但Like功能有限,复杂格式匹配优先用正则
三、VBA中使用正则的示例代码
Sub MatchTargetPatterns() Dim regEx As Object Set regEx = CreateObject("VBScript.RegExp") regEx.Global = False '仅匹配一次 regEx.IgnoreCase = False '区分大小写 '测试...-数字格式 regEx.Pattern = "^...-\d+$" Debug.Print regEx.Test("...-28") '返回True Debug.Print regEx.Test("...-1234") '返回True Debug.Print regEx.Test("..-28") '返回False(点数量不足) '测试数字-...格式 regEx.Pattern = "^\d+-...$" Debug.Print regEx.Test("56-...") '返回True Debug.Print regEx.Test("789-...") '返回True Debug.Print regEx.Test("56-..") '返回False(点数量不足) End Sub
内容的提问来源于stack exchange,提问作者Fighter Jet
相关产品推荐
相关产品推荐

