【发布时间】:2020-06-26 14:01:33
【问题描述】:
我的正则表达式有点问题。
鉴于以下文本行,我想创建一个正则表达式来捕获 dll 和 TLB 文件名,括号前的文本和括号后的版本号。
Enabler .Net API (ITL.Enabler.Api.dll, ITL.Enabler.Api_pcl.dll, ITL.Enabler.API.TLB) v1.3.2
事实上,我希望它也能捕获 *.sys、*.exe。
这是我到目前为止与 dll 匹配的内容。
([\w .]*.dll)
但不会同时捕获两个组。只有最后一个文件在组中。如何让它捕获所有文件?
为了获取版本号,我期望如下所示。版本格式为 v1.2.n.n n.n 是可选的。
(v\d.{2,})
我希望能够在一行中捕获 *.dll、*.sys、*.tlb 等。 我希望扩展名不区分大小写。
所以像这样的事情就是这样做的。 ([\w .]*.[d|D][l|L][l|l])
---更新---
代码:
txt := "Enabler .Net API (ITL.Enabler.Api.dll, ITL.Enabler.Api_pcl.dll, ITL.Enabler.API.TLB) v1.3.2"
re := regexp.MustCompile(`(?i)([\w .]*\.dll)`)
match := re.FindStringSubmatch(txt)
for i := range match {
fmt.Println(match[i])
}
我要捕获的是所有 dll 版本以及任何以 sys 和 exe 和 tlb 结尾的文件。然后我想要版本号。
不确定如何重复捕获。它只显示最后一个 dll 条目
【问题讨论】:
-
[d|D]- 此字符集表示d或|或D字符之一。其中有3个会被接受。如果你想要d or D,那就是[dD] -
真的很难理解你的问题是什么。您能否展示您的最佳代码尝试,并说明它的作用以及您真正想要获得的内容。关于 golang 中不区分大小写的正则表达式:stackoverflow.com/a/15326471/251311
-
@zerkms - 我已经编辑了我的问题