正则表达式以匹配不包含多个单词的文件名

我进行了搜索,尝试了很多,但是没有找到完全的功能正则表达式。

我具有给定(“自行创建”,因此可以修改)格式的文件名,例如“ tagged,tag1,tag2,tag3,3121212.jpg”,其中“ tagged”部分和最后一个数字是固定的。

现在,我想匹配所有不包含某些单词累积的文件名,例如tag1 AND tag3。我想出了某事。像这样的^(?!(.*,car[,]?)(.*,sport[,]?)).*\[\w]{3}$,但这也可以匹配 carbomb 而不是仅仅匹配汽车。

简而言之,任务是“查找”所有文件名,这些文件名不包含所有这些确切的词。

如果需要,我可以用其他方式重命名文件。

感谢您的帮助。 Regex-Environment是.net应用程序。但是我不知道底层的正则表达式库。

更新:对不起,我忘了提及,单词的顺序应该无关紧要(标签不是按字母顺序排序的),避免使用的单词数量必须灵活


SO告诉我进一步澄清,所以我尝试(即使我不知道要添加什么)。我们开始:

给出:“ tagged,sport,car,blue,24761.jpg”之类的文件名

目标:借助正则表达式,过滤所有包含未知/混合顺序的单词/标记(累积)的文件。

陷阱:

  • regex必须与所有给定单词完全匹配(“ car”不得与“ carbomb”匹配)
  • 单词必须匹配,而不考虑正则表达式的顺序

感谢您的帮助!

draggon 回答:正则表达式以匹配不包含多个单词的文件名

如果您想避免使用Dockertag1,则需要两个否定的提前行:

tag3

https://regex101.com/r/66Or5U/1/

,

执行此操作的一种方法是对第一个标签使用负前瞻,在第二个标签内部使用正前瞻。

^(?!.*,tag1,(?:.*,tag3,)).*$

但是,如果标签的顺序相反,这仍将捕获该行。因此,也许复制表达式并反转标签。

^(?!.*,tag1(?:.*,))(?!.*,tag3(?:.*,)).*$

https://regex101.com/r/0nj1t7/11

本文链接:https://www.f2er.com/2838751.html

大家都在问