【发布时间】:2020-03-28 15:08:36
【问题描述】:
在 C# 上遇到正则表达式的问题。我通过 Directory.GetDirectories 获取字符串列表(目录名称)。 例如:
E:\DevArea\SandBox\1122334455
E:\DevArea\SandBox\1231231231
E:\DevArea\SandBox\1231231232
E:\DevArea\SandBox\1231231233
E:\DevArea\SandBox\1231231234
E:\DevArea\SandBox\123123123123
E:\DevArea\SandBox\1231231231ddd
我需要找到仅包含 10 位数字(仅 10 位)的目录名称。 我尝试使用下一个:
public List<string> GetDirectoryList()
{
var directoryList = new List<string>();
var list = Directory.GetDirectories(sourcePath);
foreach (var field in list)
{
if (checker.CheckInfo(field.Substring(field.LastIndexOf('\\') + 1)))
{
directoryList.Add(field);
}
}
return directoryList;
}
public bool CheckInfo(string checkingInfo)
{
string stringPattern = "[0-9]{10}";
if (!Regex.IsMatch(checkingInfo, stringPattern))
{
return false;
}
return true;
}
结果我得到了由数字组成的目录名称列表,但还有下一个:
E:\DevArea\SandBox\123123123123
如何忽略超过 10 位的名称?
【问题讨论】:
-
(?<!\d)[0-9]{10}(?!\d) -
由于您剥离了父目录,您只需将锚点添加到正则表达式
^\d{10}$ -
非常感谢! (?