文件名完全匹配的正则表达式模式

Regular Expression Pattern for Full Match of Filenames

我正在遍历图像文件名数组,如下所示:

  1. ConImage1 - Core.png
  2. ConImage211 - Core.png
  3. ConImage34 - Core.png
  4. ConImage09 - Core.png
  5. ConImage11 - Core.png
  6. ConImageOri23.png
  7. ConImageOri2.png
  8. ConImageOri11.png
  9. ConImageOri132.png
  10. ConImageForEng7 - Core.png
  11. ConImageForEng12 - Core.png
  12. ConImageForEng11 - Core.png
  13. ConImageForEng10 - Core.png
  14. ConImage1-不喜欢-Core.png
  15. ConImage1-赞-Core.png
  16. ConImage12 - 不喜欢 - Core.png
  17. ConImage12 - 赞 - Core.png
  18. ConImage34 - 不喜欢 - Core.png
  19. ConImage34 - 赞 - Core.png
  20. ConImage55 - 不喜欢 - Core.png
  21. ConImage55 - 赞 - Core.png

我需要一个仅匹配以下文件名的正则表达式模式:

  1. ConImage1 - Core.png
  2. ConImage211 - Core.png
  3. ConImage34 - Core.png
  4. ConImage09 - Core.png
  5. ConImage11 - Core.png

  6. ConImageOri23.png

  7. ConImageOri2.png
  8. ConImageOri11.png
  9. ConImageOri132.png

并排除包含单词的文件名:喜欢、不喜欢、ForEng 等

编辑:

我不擅长正则表达式,但尝试使用类似的方法来限制我的搜索。

^(ConImage|(Orig|!ForEng)){1}[0-9\ \-]+[\W(Dislikes|Likes)][0-9\ \-]+(Core\.png)$/i/g

或者下面的方法用于查找必要的文件,但是如果出现一些奇怪的名称,例如ConImageMaxx12 - Core.png 等,它也会拾取它。

^ConImage((?!ForEng|Dislikes|Likes).)*$

我不想实现 VBA.Filter 功能,但需要一个 Regex 解决方案。

如有任何帮助,我们将不胜感激。

没有特定的规则,很难想出正则表达式。 要匹配您发布的特定值(并排除您在评论中提到的 ConImageMaxx12),您可以尝试:

编辑 以更正丢失的 "Start of String" 令牌

^ConImage(?:Ori)?\d+(?:(?!(?:For|Likes)).)*$

正则表达式匹配:

  • ConImage
  • 可选择匹配 Ori
  • 匹配一位或多位数字
  • 然后匹配字符串的其余部分,只要它不包含负前瞻中的子字符串(这将包括 ForEngLikesDislikes 和其他派生词)

无法说明这组规则是否足以消除不需要的文件名,因为我只是根据您所写的内容猜测一些规则。

这里是对正则表达式的更正式的解释,带有一些指向教程解释的链接:

请注意,根据您的意见,我们设置了不区分大小写的选项

匹配特定文件名

^ConImage(?:Ori)?\d+(?:(?!(?:For|Likes)).)*$

选项:不区分大小写; ^$ 匹配换行符

创建于RegexBuddy