gpt4 book ai didi

regex - 如何在VBA正则表达式中使用非捕获组?

转载 作者:行者123 更新时间:2023-12-02 11:57:58 24 4
gpt4 key购买 nike

通过 VBA,我尝试使用正则表达式从 UNC 路径捕获不带扩展名的文件名 - 仅查看 .TIF 文件。

到目前为止,这就是我所拥有的:

Function findTIFname(filestr As String) As String

Dim re As RegExp
Dim output As String
Dim matches As MatchCollection

Set re = New RegExp
re.pattern = "[^\\]+(?:[.]tif)$"
Set matches = re.Execute(filestr)
If matches.Count > 0 Then
output = matches(0).Value
Else
output = ""
End If
findTIFname = output

End Function

但是当我按如下方式运行该函数时:

msgbox findTIFname("\\abc\def\ghi\jkl\41e07.tif")

我得到以下输出:

41e07.tif

我认为“(?:xxx)”是非捕获组的正则表达式语法;我做错了什么?

最佳答案

语法(?:...)是一个非捕获组。这里您需要的是一个正向先行断言,其语法如下:

re.pattern = "[^\\]+(?=[.]tif$)"

请注意,环视断言的宽度为零并且不消耗任何字符。

关于regex - 如何在VBA正则表达式中使用非捕获组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6852005/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com