首页 > 解决方案 > 积极的后视/前瞻 RegEx VBA

问题描述

我知道 VBA 不支持积极的前瞻/后瞻,所以我需要一些关于以下问题的建议。

我只想替换单个字符之间的所有空格,以便 ABC 变为 ABC 但 AB C 保持 AB C。

ObjRegex.Pattern = "((?<=\b\w)\s(?=\w\b))"
SampleString = ObjRegex.Replace(SampleString, vbNullString)

任何帮助,将不胜感激。

标签: regexvba

解决方案


您可以使用

ObjRegex.Pattern = "\b(\w)\s(?=\w)\b"
SampleString = ObjRegex.Replace(SampleString, "$1" & vbNullString)

$1可以将lookbehind 转换为捕获组,并且可以使用占位符将其消耗的值恢复(放回)到结果中。

请参阅正则表达式演示

图案细节

  • \b- 单词边界
  • (\w)- 第 1 组(用$1替换模式中的占位符表示):一个单词 char
  • \s- 一个空格
  • (?=\w)- 正向前瞻,需要在当前位置右侧立即出现一个单词 char
  • \b- 单词边界

推荐阅读