积极的lookbehind / lookahead RegEx VBA

时间:2018-06-15 09:25:47

标签: regex vba

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

我想仅在单个字符之间替换所有空格,以便A B C变为ABC但AB C保持AB C.

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

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以使用

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

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

请参阅regex demo

模式详情

  • \b - 字边界
  • (\w) - 第1组(在替换模式中使用$1占位符引用):单词char
  • \s - 空白
  • (?=\w) - 一个积极的前瞻,需要在当前位置右侧立刻使用字词
  • \b - 字边界