正则表达式 VBA : match specific substring

标签 regex excel vba

我有一个跟随的字符串:

K9908098,G2342DF34324/234234323~234-234-234;R38724234+3D9083324T234Y 23E4234323

如何仅捕获包含字母和数字的子字符串,例如VBA 中的 K99080983D9083324T234Y? 此模式 [A-Z\d]+ 匹配所有子字符串,而此 ([A-Z]+\d+)+ 不会抓取 3D9083324T234Y

最佳答案

您可以使用

\b(?=\d*[A-Z])(?=[A-Z]*\d)[A-Z\d]+\b

请参阅regex demo .

详细信息

  • \b - 单词边界
  • (?=\d*[A-Z]) -(正向前瞻要求)0 个以上数字后必须有一个大写 ASCII 字母
  • (?=[A-Z]*\d) - 0+ 个大写 ASCII 字母后必须有一个 ASCII 数字
  • [A-Z\d]+ - 1+ 个大写 ASCII 字母或数字
  • \b - 单词边界。

查看 VBA 演示:

Dim regex As Object, allMatches As Object, match As Object
Dim s As String

s = "K9908098,G2342DF34324/234234323~234-234-234;R38724234+3D9083324T234Y 23E4234323"

Set regex = CreateObject("vbscript.regexp")
With regex
    .Global = True
    .MultiLine = False
    .Pattern = "\b(?=\d*[A-Z])(?=[A-Z]*\d)[A-Z\d]+\b"
End With

Set allMatches = regex.Execute(s)
For Each match In allMatches
    Debug.Print match.Value
Next

输出:

K9908098
G2342DF34324
R38724234
3D9083324T234Y
23E4234323

关于正则表达式 VBA : match specific substring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49951191/

相关文章:

excel - Reporting Services Excel 渲染扩展?

VBA:如何在列中获取唯一值并将其插入到数组中?

regex - 如何编写这个 grep 正则表达式

regex - Visual Studio 代码 : How to automate a simple regex-find and replace?

excel - Excel 能否将 CSV 中的 URL 解释为超链接?

vba - 使用 VBA 将多个图像作为注释插入到多个单元格中,给出下标超出范围错误 (9)

excel - 试图得到这个,以便文本将转到表格最后一行下的下一行

PHP preg_replace 替换换行符,但没有任何效果

regex - 如何检索 "_id="和 "&"之间的数据?

sql-server - 使用 ADODB 中的变量从 SQL Server 存储过程返回结果