在包含具有完整路径的行的文本中,我只需要匹配文件名不以单词'TMP'开头的行(不区分大小写)
在下一个示例列表中,标记为“排除”的行不应匹配
c:\folder1\TMP_file.ext----------EXCLUDE
c:\TMP_folder1\file.ext
c:\folder1\TMP_folder2\file.ext
c:\folder1/TMP_file.ext----------EXCLUDE
c:\file.ext
c:\TMP_file.ext------------------EXCLUDE
TMP_file.ext---------------------EXCLUDE
file.ext
我提出了一个简单的表达式[^\\/\r\n]+$
(接受'\'和'/'作为目录分隔符),它成功地将整个文件名与其扩展名匹配,但我不知道如何添加(?!...)
来排除以“tmp”开头的匹配
反转表达式tmp[^\\/\r\n]+$
也是解决方案,但我不知道如何实现
我知道这个问题与其他问题类似(冒着被否决的风险…),但我没有找到一种方法将它们与这个问题联系起来
你可以用
请参见regex demo(
[^/]
替换为[^/\n]
,因为正则表达式是针对单个多行字符串进行测试的)详细信息
^
-字符串的开头(?!(?:.*[/\\])?TMP(?![^\W_])[^/]*$)
-如果在当前位置的右侧,有(?:.*[/\\])?
-任何0+字符(尽可能多的换行字符除外)的可选出现,然后/
或\
TMP(?![^\W_])
-TMP
(不区分大小写)不后跟字母或数字(可后跟_
)[^/]*
-除/
以外的任何0个或更多字符$
-字符串的结尾李>.+
-除换行符以外的一个或多个字符李>正则表达式在这里不是正确的解决方案。您最好迭代文件名,采用基本路径,如果以“TMP”开头,则跳过
然后
list(filter_tmp(text))
将为您提供非临时路径的列表相关问题 更多 >
编程相关推荐