bao
bao

Reputation: 121

How to find files according RegEx in C#

I need to get list of files on some drive with paths that matches specific pattern, for example FA\d\d\d\d.xml where \d is digit (0,1,2..9). So files can have names like FA5423.xml.

What is the most efficient name to do this?

Upvotes: 10

Views: 22875

Answers (3)

Phil Gan
Phil Gan

Reputation: 2863

Are you using C# 3?

Regex reg = new Regex(@"^FA[0-9]{4}\.xml$");
var files = Directory.GetFiles(yourPath, "*.xml").Where(path => reg.IsMatch(path));

Upvotes: 22

Marcelo Cantos
Marcelo Cantos

Reputation: 185862

Use the Directory API to find FA????.xml, and run the resulting list through a regex filter:

var fa = from f in Directory.GetFiles("FA????.xml")
         where Regex.Match(f, "FA\d\d\d\d\.xml")
         select f;

Upvotes: 2

James
James

Reputation: 82096

You could do something like:

System.IO.Directory.GetFiles(@"C:\", "FA????.xml", SearchOption.AllDirectories);

Then from your results just iterate over them and verify them against your regex i.e. that the ? characters in the name are all numbers

Upvotes: 6

Related Questions