Regex 用于否定的VBA正则表达式

Regex 用于否定的VBA正则表达式,regex,regex-negation,regex-lookarounds,regex-group,regex-greedy,Regex,Regex Negation,Regex Lookarounds,Regex Group,Regex Greedy,我面临一个正则表达式的问题 我试图得到后面不跟厘米或英寸的数字,如下例所示: 30.5 XXL高度175.5 cm-该值应仅返回30.5,因为175.5已附加“cm” 34英寸XL 54-这应该只返回54英寸,因为34英寸 如何使用正则表达式执行此操作?使用负前瞻(?!) 正则表达式: 详情: (?=)正向前瞻 (?:)非捕获组 (?!)消极前瞻 |或 $在行尾断言位置 VBA代码: Set re = CreateObject("VBScript.RegExp") re.Global = T

我面临一个正则表达式的问题

我试图得到后面不跟厘米或英寸的数字,如下例所示:

  • 30.5 XXL高度175.5 cm
    -该值应仅返回30.5,因为175.5已附加“cm”

  • 34英寸XL 54
    -这应该只返回54英寸,因为34英寸


  • 如何使用正则表达式执行此操作?

    使用负前瞻
    (?!)

    正则表达式

    详情:

    • (?=)
      正向前瞻
    • (?:)
      非捕获组
    • (?!)
      消极前瞻
    • |
    • $
      在行尾断言位置
    VBA代码

    Set re = CreateObject("VBScript.RegExp")
    re.Global = True
    
    re.Pattern = "\d+(?:\.\d+)?(?=(?: (?!cm|inches)|$))"
    For Each Match In re.Execute("30.5 XXL Height 175.5 cm")
        Debug.Print (Match)
    Next
    
    输出:

    30.5
    
    非常感谢你(约万:)花时间帮助我。