【发布时间】:2018-06-15 09:25:46
【问题描述】:
我知道 VBA 不支持正向前瞻/后瞻,所以我需要一些关于以下问题的建议。
我只想替换单个字符之间的所有空格,以便 A B C 变为 ABC 但 AB C 保持 AB C。
ObjRegex.Pattern = "((?<=\b\w)\s(?=\w\b))"
SampleString = ObjRegex.Replace(SampleString, vbNullString)
任何帮助将不胜感激。
【问题讨论】:
我知道 VBA 不支持正向前瞻/后瞻,所以我需要一些关于以下问题的建议。
我只想替换单个字符之间的所有空格,以便 A B C 变为 ABC 但 AB C 保持 AB C。
ObjRegex.Pattern = "((?<=\b\w)\s(?=\w\b))"
SampleString = ObjRegex.Replace(SampleString, vbNullString)
任何帮助将不胜感激。
【问题讨论】:
你可以使用
ObjRegex.Pattern = "\b(\w)\s(?=\w)\b"
SampleString = ObjRegex.Replace(SampleString, "$1" & vbNullString)
可以将lookbehind 转换为捕获组,并且可以使用$1 占位符将其消耗的值恢复(放回)到结果中。
请参阅regex demo。
模式详情
\b - 单词边界(\w) - 第 1 组(用替换模式中的 $1 占位符表示):一个单词 char\s - 一个空格(?=\w) - 正向前瞻,需要在当前位置右侧立即出现一个字符 char\b - 单词边界【讨论】: