我正在使用正则表达式搜索文件夹,以找到某些字符串匹配的文件,但我也需要排除其他字符串。例如,在下面的路径,我需要返回一个匹配的文件,包含字符串“MVP”从文件名只(不是从路径)。我需要它不匹配,如果字符串“失踪”是包括在文件名中(不是从路径)。文件类型还需要是.csv、.txt、.xlsx或. xls。
\\p8files\MVP\Inbound\2023\202310\20231016\BillingProvEntityFix1016.xlsx
\\p8files\MVP\Inbound\2023\202310\20231016\BillingProv_MVP_EntityFix1016.xlsx
\\p8files\MVP\Inbound\2023\202310\20231016\BillingProv_MVP_Entity_MissingFix1016.xlsx
字符串
在上面的3个例子中,结果将是:
1.不匹配-文件名中缺少“MVP”(不是来自路径)
1.匹配-文件名中包含“MVP”,文件名中不包含“Missing”
1.不匹配-文件名中有“MVP”,但文件名中确实包含“Missing”
我尝试使用下面的正则表达式,但它返回所有匹配,因为“MVP”在文件路径中。
^.*(?=^.*MVP)(?!^.*Missing).*(\.csv|\.xls|\.xlsx|\.txt)$
型
也尝试了这个,它搜索文件名只像我需要的,但我不知道如何排除“失踪”的文件名。
\b.*MVP[^\\]*(\.csv|\.xls|\.xlsx|\.txt)$
型
任何帮助将不胜感激,谢谢!
马特
2条答案
按热度按时间brccelvz1#
这个正则表达式应该对你有用:
字符串
RegEx Demo
RegEx详情
^
:开始(?=.*MVP[^\\]*$)
:积极的前瞻性AssertMVP
在文件名部分(而不是路径)中找到,因为[^\\]*$
将确保在匹配MVP
之后没有\
(?!.*Missing[^\\]*$)
:当在文件名部分(而不是路径)中找到Missing
时,负前瞻将使匹配失败.*
:匹配任何文本\.
:匹配点(?:csv|xlsx?|txt)
:匹配其中一个扩展名$
:结束u4dcyp6a2#
如果您只想将文件名与这些条件相匹配,
字符串
https://regex101.com/r/zi8sKY/1