gpt4 book ai didi

regex - 如何编写正则表达式来填充给定文件类型的列表以排除某些文件夹

转载 作者:行者123 更新时间:2023-12-02 19:26:09 25 4
gpt4 key购买 nike

我对此进行了大量搜索,但仍然无法将它们完全放在一起。

我正在尝试创建一个 Excel VBA 程序,该程序根据用户输入的正则表达式填充电子表格,以便我可以使用其他 VBA 程序处理这些文件。

例如,如果我想用所有 Autodesk Inventor 文件类型填充文件夹,我会使用:

.*\.(iam|ipt|ipn|idw)

根据我所读到的内容,如果我希望正则表达式跳过文件夹中的文件或包含字符串,我会使用类似以下内容的内容:

(?iOldVersions)

但就像我提到的,我很难将其放在一起,以便它是一个单一的 reg ex 调用 - 而且,如果有多个字符串我希望它跳过(即;文件夹 OldVersions旧版)

我想我想将其保留为正则表达式,尽管我猜测我也可以使用 wScript.Shell (或任何该对象),但现在最好熟悉正则表达式。

我使用的代码与这篇文章中的代码相同,但我添加了一个参数,通过从 Excel 中的单元格中提取模式来将模式传递到顶级代码。

List files of certain pattern using Excel VBA

再次强调,任何帮助将不胜感激!

再次感谢大家!

编辑:最新尝试......

Private Sub FindPatternMatchedFiles()

objFile = "C:\OldVersions\TestFile.iam"

Dim objRegExp As Object
Set objRegExp = CreateObject("VBScript.RegExp")

'objRegExp.Pattern = "(.*\.(iam|ipt|ipn|idw))(?!(\z))."
objRegExp.Pattern = "(^((?!OldVersions).)*$)(.*\.(iam|ipt|ipn|idw))"

objRegExp.IgnoreCase = True

res = objRegExp.test(objFile)
MsgBox (res)

'Garbage Collection
Set objRegExp = Nothing
End Sub

最佳答案

要排除具有 \OldVersions\\Legacy\ 的匹配字符串,只需在开头添加 anchor 和否定前瞻:

^(?!.*\\(?:OldVersions|Legacy)\\).*\.(?:iam|ipt|ipn|idw)$

请参阅regex demo

详细信息:

  • ^ - 字符串开头
  • (?!.*\\(?:OldVersions|Legacy)\\) - 如果存在 \ + 任一 ,则负向前瞻会导致匹配失败OldVersionsLegacy + \ 后 0+ 个字符(\r\n 之外)(.*).
  • .* - 除 \r\n 之外的 0+ 个字符,尽可能多,直到最后一个...
  • \. - 文字 .
  • (?:iam|ipt|ipn|idw) - 非捕获组中的替代方案之一
  • $ - 字符串结尾。

关于regex - 如何编写正则表达式来填充给定文件类型的列表以排除某些文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39480180/

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