You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA正则表达式:双引号后按需添加空格的功能修复

修复VBA正则函数实现双引号后按需添加空格

需求:在双引号"之后添加一个空格,但当双引号后紧跟空格、x/X或*时不执行添加操作。现有VBA正则函数仅能正确处理第一个测试用例,需调整适配所有场景。

现有代码

Function Add_Space(str As String) As String

   Static re As New RegExp
   
    re.Pattern = "("""")"
    
     re.Global = True
      re.IgnoreCase = True
        Add_Space = re.Replace(str, "$1 ")
            
End Function

测试用例

当前结果预期结果
Repair of 8"salesRepair of 8" sales
Repair of 8"x12"salesRepair of 8"x12" sales
Repair of 8"*12" salesRepair of 8"*12" sales
Repair of 8" salesRepair of 8" sales

修复方案

原正则会匹配所有双引号并强制添加空格,未处理例外场景。我们需要用负向预查来排除不需要添加空格的情况,修改后的正则表达式可精准匹配符合要求的双引号。

修复后的函数

Function Add_Space(str As String) As String
    Static re As New RegExp
    ' 匹配双引号,且后面不是空格、x/X、*
    re.Pattern = "("""")(?!\s|[x*])"
    re.Global = True
    re.IgnoreCase = True ' 忽略大小写,同时适配x和X
    Add_Space = re.Replace(str, "$1 ")
End Function

正则逻辑说明

  • (""):捕获双引号作为分组1,用于替换时保留原双引号
  • (?!\s|[x*]):负向预查规则,确保双引号后的字符不属于以下任意一种:
    • \s:任意空白字符(包含空格)
    • [x*]:x、X(因开启IgnoreCase)或*

通过该规则,函数只会给需要添加空格的双引号后补空格,自动跳过所有例外场景。

内容的提问来源于stack exchange,提问作者Peace

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 17:02:17