RegExp 对象 - 运行-time error '5017' - 没有明显的模式问题

RegExp Object - Run-time error '5017' - No apparent pattern issues

我正在使用 RegExp 对象解析普通文本字段并将其转换为数字。我有模式:(^[^0-9+-]+)|((?<=[+-])[^0-9]+)|((?<=[0-9])[^0-9.]+) 应该将 "37,080 lbs" 之类的输入转换为 37080.

出于某种原因,当我尝试执行此操作时,出现 运行 时错误“5017”。我看到另一个 post 问题是由模式错误引起的,但我没有看到我的模式有任何问题并且在像 https://regex101.com/ 这样的网站上测试它表明模式是有效的。

下面是说明此错误的示例脚本:

Function Example()
    Dim Regex As Object
    Set Regex = CreateObject("VBScript.RegExp")
    With Regex
        .Global = True
        .MultiLine = False
        .Pattern = "(^[^0-9+-]+)|((?<=[+-])[^0-9]+)|((?<=[0-9])[^0-9.]+)"
    End With
    
    Debug.Print Regex.Replace("37,080 lbs", "")
End Function

注意:我标记了 VBScript,因为我正在使用 VBScript.RegExp 对象。代码本身是 VBA 6.5.1020 运行 in Excel 2007.

您可以替换所有出现的这种模式:

^[^0-9+-]+|([+-])[^0-9]+|([0-9])[^0-9.]+


参见regex demo

代替 VBA 正则表达式引擎不支持的后视 ((?<=...)),您可以使用捕获组,并使用对捕获值的反向引用在结果中恢复捕获的文本。