[英]c# how to write Regular Expression filter
我正在嘗試在 C# 中過濾目錄中的文件。
我認為 Regex 是最好的方法,但我在寫表達式時遇到了麻煩……有人可以幫助我……
這是我的代碼:
Regex reg = new Regex(Expr);
var files = Directory.GetFiles(Dir, "*.txt")
.Where(path => reg.IsMatch(path))
.ToList();
我的 Expression Expr 會匹配所有以“fileXXX”開頭但不以“_L.txt”結尾的文件,我該如何解決我的問題?
謝謝!
如果fileXXX
是文字,您只需使用StartsWith
和EndsWith
即可實現所需的內容:
var files = Directory
.EnumerateFiles(Dir, "*.txt")
.Where(path => Path.GetFileNameWithoutExtension(path).StartsWith("fileXXX")
&& !Path.GetFileNameWithoutExtension(path).EndsWith("_L"))
.ToList();
請注意,您的path
包含文件路徑,包括文件夾路徑,而不僅僅是文件名。 這就是為什么您需要使用Path.GetFileNameWithoutExtension(path)
來執行檢查的原因。
否則,使用像這樣的正則表達式
var files1 = Directory
.GetFiles(Dir, "*.txt")
.Where(path => Regex.IsMatch(Path.GetFileNameWithoutExtension(path), @"^fileXXX.*(?<!_L)$"))
.ToList();
當^fileXXX.*(?<!_L)$
任何文本(在這里,沒有擴展名的文件名)與開始相匹配fileXXX
,並且不會結束_L
(由於負回顧后(?<!_L)
結束之前字符串錨$
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.