如何查找包含以@“”开头的字符串的目录文件;任意字符串”&#x9
本文关键字:字符串 何查找 文件 amp#x9 任意 开头 包含 查找 | 更新日期: 2023-09-27 18:30:04
我在c:/dom/xml中有xml文件。我只想搜索所有包含文本或字符串开头的xml文件使用@"anystring"&x9
示例:下面的标记出现在xml文件中,我需要过滤包含文本的xml文件名。
<parameter ID="**@Id_name	**;	" >
我试过低于
static void Main(string[] args)
{
string sourceFolder = @"C:'dom'Xml";
string searchWord = "	";
List<string> allFiles = new List<string>();
AddFileNamesToList(sourceFolder, allFiles);
foreach (string fileName in allFiles)
{
string contents = File.ReadAllText(fileName);
if (contents.Contains(searchWord))
{
Console.WriteLine(fileName);
}
}
Console.WriteLine(" ");
System.Console.ReadKey();
}
public static void AddFileNamesToList(string sourceDir, List<string> allFiles)
{
string[] fileEntries = Directory.GetFiles(sourceDir);
foreach (string fileName in fileEntries)
{
allFiles.Add(fileName);
}
//Recursion
string[] subdirectoryEntries = Directory.GetDirectories(sourceDir);
foreach (string item in subdirectoryEntries)
{
// Avoid "reparse points"
if ((File.GetAttributes(item) & FileAttributes.ReparsePoint) != FileAttributes.ReparsePoint)
{
AddFileNamesToList(item, allFiles);
}
}
}
但我需要像"Anystring"这样的单词&x9’
我希望下面的代码能对您有所帮助。
static void Main(string[] args)
{
string sourceFolder = @"C:'dom";
string searchWord = "	";
string regexPattern = @"@([A-Za-z0-9'-_]+).'	";
List<string> allFiles = new List<string>();
AddFileNamesToList(sourceFolder, allFiles);
foreach (string fileName in allFiles)
{
string contents = File.ReadAllText(fileName);
if (showMatch(contents, regexPattern))
{
if (contents.Contains(searchWord))
{
Console.WriteLine(fileName);
}
}
}
Console.WriteLine(" ");
System.Console.ReadKey();
}
private static bool showMatch(string text, string expr)
{
Console.WriteLine("The Expression: " + expr);
MatchCollection mc = Regex.Matches(text, expr);
foreach (Match m in mc)
{
Console.WriteLine(m);
}
return mc.Count > 0;
}
public static void AddFileNamesToList(string sourceDir, List<string> allFiles)
{
string[] fileEntries = Directory.GetFiles(sourceDir);
foreach (string fileName in fileEntries)
{
allFiles.Add(fileName);
}
//Recursion
string[] subdirectoryEntries = Directory.GetDirectories(sourceDir);
foreach (string item in subdirectoryEntries)
{
// Avoid "reparse points"
if ((File.GetAttributes(item) & FileAttributes.ReparsePoint) != FileAttributes.ReparsePoint)
{
AddFileNamesToList(item, allFiles);
}
}
}
您可以如下定义Regex
并在代码中使用它。
Regex rule = new Regex(@"('' |[^ ])+'$#x9'b");
代码可以修改为
static void Main(string[] args)
{
string sourceFolder = @"C:'dom'Xml";
string searchWord = @"('' |[^ ])+'$#x9'b";
Regex rule = new Regex(searchWord);
List<string> allFiles = new List<string>();
AddFileNamesToList(sourceFolder, allFiles);
foreach (string fileName in allFiles)
{
string contents = File.ReadAllText(fileName);
if (rule.IsMatch(contents))
{
Console.WriteLine(fileName);
}
}
Console.WriteLine(" ");
System.Console.ReadKey();
}
工作小提琴手demo