regex - 积极的后视/前瞻 RegEx VBA
问题描述
我知道 VBA 不支持积极的前瞻/后瞻,所以我需要一些关于以下问题的建议。
我只想替换单个字符之间的所有空格,以便 ABC 变为 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)
$1
可以将lookbehind 转换为捕获组,并且可以使用占位符将其消耗的值恢复(放回)到结果中。
请参阅正则表达式演示。
图案细节
\b
- 单词边界(\w)
- 第 1 组(用$1
替换模式中的占位符表示):一个单词 char\s
- 一个空格(?=\w)
- 正向前瞻,需要在当前位置右侧立即出现一个单词 char\b
- 单词边界
推荐阅读
- java - RxJava - groupBy、toMap 和 flatMap 不能很好地协同工作?
- thingsboard - 在 ThingsBoard 2.0.3 主屏幕中找不到插件
- validation - 使用电子邮件地址预先填写托管的 MailChimp 注册表单会显示验证错误
- mongodb - 比较同一文档的两个字段
- wpf - WPF MVVM Multibinding - 如何使用 RelayCommand 将两个参数传递给 Command
- python - 如何在 python 程序中将数据写入文件?
- android - 我的第一个 Android 游戏的多点触控错误
- php - 通过 PHP 解析从网站获取详细信息
- java - 如何以及是否使用 Pact 测试语法(错误请求)验证?
- java - Java 9 模块和 uber-jar