regex - 使用 VBA 替换的精确匹配

标签 regex vba excel replace pattern-matching

我正在尝试使用 VBA 替换函数从另一个字符串中删除一个字符串。

我试图从中删除的字符串如下所示,其中包含由 ; 连接的单元格地址

“$B$1;$B$21;$B$2;$C$3;$B$20;$B$201”

我想要删除的字符串是 xxx 的 $B$2

替换函数匹配字符串中所有出现的 $B$2 并给出如下输出

$B$1;xxx1;xxx;$C$3;xxx0;xxx01

但是我想在字符串中精确搜索 $B$2 并期望类似的输出

$B$1;$B$21;xxx;$C$3;$B$20;$B$201

我想到的一种方法是拆分 ; 上的字符串(分隔符和循环并查看每个值),但我在这里寻找更直接的解决方案。比如使用模式匹配技术或其他技术。

最佳答案

您可以在替换操作中包含以下;,以确保仅匹配“完整”引用。您只需要采取预防措施,通过在末尾添加一个虚拟分号来匹配最后一个条目:

s = "$B$1;$B$21;$B$2;$C$3;$B$20;$B$201"
find = "$B$2"
repl = "xxxx"
result = Replace(s & ";", find & ";", repl & ";")
result = Left(result, Len(result)-1) ' Remove the final semicolon

虽然这适用于您的情况,但在更一般的练习中,您还需要测试前面的分隔符,然后最后两行将如下所示:

result = Replace(";" & s & ";", ";" & find & ";", ";" & repl & ";")
result = Mid(result, 2, Len(result)-2)

关于regex - 使用 VBA 替换的精确匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42467057/

相关文章:

asp.net - 在 IE7 中运行正则表达式验证器时的奇怪错误

vba - 类型不匹配循环遍历形状

vba - 从多页表单中获取事件控件名称和值

vba - 如果存在值查找,则excel vba查找关键字列表,然后编辑另一个单元格的值

excel - 如何使用powershell更改excel CSV保存中的分隔符

java - 基于正则表达式的替换效率

php - MySQL正则表达式按顺序匹配包含某些字段的多个CSV行

VBA 手动转置数组的变体

excel - 如何使用vba引用其他点选择特定范围?

c# - 如何编写组合字符的正则表达式?