如何搜索一系列正则表达式,例如
Regex1,Regex2对驱动器上的所有文件重复,例如C:\?
答案 0 :(得分:0)
我不知道任何现成的解决方案。您必须递归枚举所有文件,并且对于每个文件,您需要将其内容加载到字符串中并对该字符串应用正则表达式。
对于给定路径下所有文件的递归枚举,我使用以下函数:
public static IEnumerable<Fileinfo> EnumerateMatches( string directory, string filenameonly,
bool dirs_only )
{
DirectoryInfo directory_info = new DirectoryInfo( directory );
if( dirs_only )
{
DirectoryInfo[] infos = directory_info.GetDirectories( filenameonly );
foreach( DirectoryInfo info in infos )
{
string subpathonly = Path.Combine( directory, info.Name );
yield return new Fileinfo( info.FullName, true, info.LastWriteTime, 0 );
}
}
else
{
FileInfo[] infos = directory_info.GetFiles( filenameonly );
foreach( FileInfo info in infos )
{
yield return new Fileinfo( info.FullName, false, info.LastWriteTime, info.Length );
}
}
}
答案 1 :(得分:0)
我不确定你将如何对文件内容进行实际的正则表达式匹配,但这里是你递归导航文件夹的方式:
public void NavigateFolder(DirectoryInfo d)
{
foreach (FileInfo f in d.GetFiles())
{
//create a streamreader and try to match regex to file contents here
}
foreach (DirectoryInfo d in d.GetDirectories())
{
NavigateFolder(d);
}
}