我知道VBA不支持积极的前瞻/外观,所以我需要一些有关下面问题的建议。
我想仅在单个字符之间替换所有空格,以便A B C变为ABC但AB C保持AB C.
ObjRegex.Pattern = "((?<=\b\w)\s(?=\w\b))"
SampleString = ObjRegex.Replace(SampleString, vbNullString)
任何帮助都将不胜感激。
答案 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
- 字边界