簡體   English   中英

c#如何編寫正則表達式過濾器

[英]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是文字,您只需使用StartsWithEndsWith即可實現所需的內容:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM